正确使用scipy.optimize.fmin_bfgs

时间:2012-04-21 10:23:14

标签: python scipy python-2.7 regression

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

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

enter image description here

我无法理解 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所期望的内容。

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

?我认为这个x0应该是1d向量。