自动停止scipy.optimize.fmin_bfgs公司n个函数调用后(不是BFGS迭代!)

2024-09-25 12:25:27 发布

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

我使用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)

Tags: 函数infor参数rangetrainscipy成本
1条回答
网友
1楼 · 发布于 2024-09-25 12:25:27

你的问题不是迭代的次数。lambda数没有变化的原因是优化不起作用。 Scipy应该为您计算出这些数字,而不是通过for循环提供这些数字。在

也许如果您可以包含更多的代码,那么就更容易看到如何修复它。在

相关问题 更多 >