缩放参数介于 0 和 1 之间以进行优化
scale parameters to be between 0 and 1 for optimization
我想对参数进行归一化以进行优化,所有参数值都应在 [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
我如何围绕此函数构建包装器以缩放参数值,以便 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))
下面的示例代码工作正常:
test=[1,3,5] #test values
def norm(params = [], *args):
new_list=[]
print params
for x in params:
y=(float(x)-min(params))/(max(params)-min(params)) #normalize
new_list.append(y)
return new_list
output=norm(test)
print output
要添加到您的程序中的代码:
def blabla(params): ### SOME FUNCTION WE WANT TO MINIMIZE
x1,x2,x3=params #### PARAMETERS OF THE FUNCTION
x1=(float(x1)-min(x1,x2,x3))/(max(x1,2,x3)-min(x1,x2,x3)) ## Similarly for x2 and x3
c=100+x1*9*x2-3*x3
return(c)
我想对参数进行归一化以进行优化,所有参数值都应在 [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
我如何围绕此函数构建包装器以缩放参数值,以便 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))
下面的示例代码工作正常:
test=[1,3,5] #test values
def norm(params = [], *args):
new_list=[]
print params
for x in params:
y=(float(x)-min(params))/(max(params)-min(params)) #normalize
new_list.append(y)
return new_list
output=norm(test)
print output
要添加到您的程序中的代码:
def blabla(params): ### SOME FUNCTION WE WANT TO MINIMIZE
x1,x2,x3=params #### PARAMETERS OF THE FUNCTION
x1=(float(x1)-min(x1,x2,x3))/(max(x1,2,x3)-min(x1,x2,x3)) ## Similarly for x2 and x3
c=100+x1*9*x2-3*x3
return(c)