我目前正在使用 scipy optimize.minimize 来获取具有 5 个参数的函数的最小值。我希望将四个输入作为函数的固定参数放入,并且我希望 optimize.minimize 给我第五个输入的值,以便从函数中获得尽可能低的输出。
这是我目前的代码:
from numpy import array
import scipy.optimize as optimize
from scipy.optimize import minimize
def objective(speed, params):
a,b,c,d=params
return abs(rg.predict([[speed,params]]))
p0=np.array([[98.3,46.9,119.9,59.1]])
x0=np.array([[4]])
result = optimize.minimize(objective, x0, args=(p0,),method='nelder-mead')
print(result.x)
我正在寻找一种能够在 optimize.minimize 函数内部传递固定参数列表或数组的方法。但是上面的代码给了我这个错误:
ValueError: not enough values to unpack (expected 4, got 1)
我似乎使它工作的唯一方法是在输入中进行硬编码,如下所示:
def objective(params):
a=100
b=20
c=119.9
d=params
e=59.1
return abs(rg.predict([[a,b,c,d,e]]))
x0=np.array([[4.5]])
result = optimize.minimize(objective, x0, method='nelder-mead')
print(result.x)
我是否以正确的方式处理这个问题?如何将列表或数组作为固定输入传递?