首页 > 解决方案 > 如何使用带有附加参数的 optimize.minimize 函数?

问题描述

这只是我做的一个测试功能。给定一个列表,如果我可以在列表中添加一个值,什么值可以最小化列表的方差?

from scipy import optimize

def var_func(x,observations):
    path_var=variance([x]+observations)
    return path_var


observations=[15,24,46,23,54]
var_func_bet=optimize.minimize(var_func,100,args=(observations))

我已经成功地在单变量函数上成功使用了 optimize.minimize,但在这里它不起作用。

尝试上面的代码给了我错误:

TypeError: can't convert type 'ndarray' to numerator/denominator

标签: python-3.xoptimizationscipy

解决方案


使用numpy.var计算方差并确保将参数作为元组传递(请参阅 hpaulj 的评论):

from scipy.optimize import minimize
import numpy as np

def var_func(x,observations):
    return np.var([x]+observations)


observations = [15,24,46,23,54]
var_func_bet = minimize(var_func, 100, args=(observations,))

推荐阅读