正确使用scipy.optimize.fmin_bfgs

2024-04-29 11:11:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

enter image description here

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

我执行以下操作:

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

其中,计算成本计算J(θ),如上图所示。但是我得到了一些与指数相关的错误,所以我认为我没有提供fmin_bfgs所期望的。

有人能解释一下吗?


Tags: 数据函数版本算法scipy逻辑initial成本
2条回答

我不知道你的全部密码,但你有没有试过

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

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

在浪费了几个小时之后,又通过发布的能力解决了这个问题……我定义了计算成本(X,y,θ),但是由于θ是优化的目标参数,所以它应该是签名中的第一个参数。修复并工作!

相关问题 更多 >