我使用logistic回归和scipy.optimize.fmin_bfgs公司最小化成本函数。对于我的特定数据集,代价函数保持不变,而BFGS不收敛,所以我想应用套索+脊正则化。在
现在,我想尝试优化正则化参数lambda1/2的各种值的成本,以便找到最佳组合:
for lambda1 in range(...):
for lambda2 in range(..):
scipy.optimize.fmin_bfgs(...) # Optimize cost with lambda1 and lambda2
问题是,因为BFGS没有收敛,所以它在lambda1/2的第一个值的调用中保持“永远”。在
有没有办法在一段时间后自动停止fmin_bfgs?maxiter参数对我没有帮助,因为我有1000个样本和大量的特征/样本,所以它甚至不能在可接受的时间内完成一次这样的迭代。在
在scipy0.11中,fmin_bfgs有一个maxfun参数——可以在scipy0.10中模拟吗?在
编辑:根据大众需求,以下是一些相关的代码片段:
计算成本的函数(常用符号适用):
^{pr2}$调用fmin_bfgs函数:
initial_thetas = numpy.zeros((len(train_X[0]), 1))
myargs = (train_X, train_y)
theta = scipy.optimize.fmin_bfgs(computeCost, x0=initial_thetas, args=myargs)
你的问题不是迭代的次数。lambda数没有变化的原因是优化不起作用。 Scipy应该为您计算出这些数字,而不是通过for循环提供这些数字。在
也许如果您可以包含更多的代码,那么就更容易看到如何修复它。在
相关问题 更多 >
编程相关推荐