我想规范化优化的参数,所有的参数值都应该在[0,1]之间。为了演示,这里有一个简单的例子:
from scipy import optimize
import numpy as np
def blabla(params): ### SOME FUNCTION WE WANT TO MINIMIZE
x1,x2,x3=params #### PARAMETERS OF THE FUNCTION
c=100+x1*9*x2-3*x3
return(c)
def RMSE(params):####OBJECTIVE FUNCTION
return ((np.sqrt((blabla(params)-100)**2))) ##100 it is the original value
guess=[1,2,3] ####INITIAL GUESS
res=optimize.minimize(RMSE, guess,method='Nelder-Mead', options={'xtol': 0.00001,'ftol':0.000001, 'disp': True}) ###NELDER-MEAD
我如何在这个函数的周围建立一个wrapper来缩放参数值,使x1[0,1],x2[0,1],x3[0,1],旧的参数比例是x1[0,1],x2[0,3],x3[0,5]。我应该重写整个函数还是有更方便的方法。谢谢你的任何暗示。在
在缩放参数之前,必须知道max(params)和min(params)。 然后,可以按如下方式缩放0到1之间的值:
标准化[x1]=(x1 min(params))/(max(params)-min(params))
下面的示例代码运行良好:
要添加到程序中的代码:
^{pr2}$相关问题 更多 >
编程相关推荐