11

我正在玩 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 期望的内容。

任何人都可以对此有所了解吗?

4

2 回答 2

5

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

于 2012-06-13T10:26:30.453 回答
0

我不知道你的整个代码,但你有没有试过

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

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

于 2012-06-06T09:58:29.230 回答