【问题标题】:correct usage of scipy.optimize.fmin_bfgsscipy.optimize.fmin_bfgs 的正确使用
【发布时间】:2012-05-02 17:44:47
【问题描述】:

我正在玩 Python 中的逻辑回归。我已经实现了一个通过梯度下降来最小化成本函数的版本,现在我想使用 scipy 的 BFGS 算法(scipy.optimize.fmin_bfgs)。

我有一组数据(矩阵 X 中的特征,X 的每一行都有一个样本,垂直向量 y 中的对应标签)。我正在尝试找到参数 Theta 以最小化:

我很难理解 fmin_bfgs 是如何工作的。据我所知,我必须传递一个要最小化的函数和一组 Thetas 的初始值。

我执行以下操作:

initial_values = numpy.zeros((len(X[0]), 1))
myargs = (X, y)
theta = scipy.optimize.fmin_bfgs(computeCost, x0=initial_values, args=myargs)

其中 computeCost 计算 J(Thetas),如上图所示。但是我得到了一些与索引相关的错误,所以我认为我没有提供 fmin_bfgs 期望的内容。

有人能解释一下吗?

【问题讨论】:

标签: python scipy python-2.7 regression


【解决方案1】:

在上面浪费了几个小时后,再次通过发布的力量解决了......我正在定义 computeCost(X, y, Thetas),但由于 Thetas 是优化的目标参数,它应该是签名中的第一个参数.已修复且有效!

【讨论】:

    【解决方案2】:

    我不知道你的全部代码,但你试过吗

    initial_values = numpy.zeros(len(X[0])) 
    

    ?我认为这个 x0 应该是一维向量。

    【讨论】:

    • 这是一个一维向量,因为 numpy.zeros() 中形状的第二个参数是 1。不过,感谢您抽出宝贵时间提出建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多