【问题标题】:how can i use the optimize.minimize function with additional arguments?如何使用带有附加参数的 optimize.minimize 函数?
【发布时间】:2019-02-10 23:57:47
【问题描述】:

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

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

【问题讨论】:

  • (observations) 只是observations; () 被忽略。 (observations,) 是一个包含一个元素的元组。逗号很重要。
  • 我进行了编辑,但我得到了同样的错误。
  • 什么是 np.array(100)+observations?
  • 数组([115, 124, 146, 123, 154])
  • 这是什么variance

标签: python-3.x optimization scipy


【解决方案1】:

使用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,))

【讨论】:

    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 2011-09-27
    • 2018-05-24
    • 1970-01-01
    • 2022-11-15
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多