当我运行
之类的东西时import numpy
from sklearn import linear_model
A= #something
b= #something
clf=linear_model.Lasso(alpha=0.015, fit_intercept=False, tol=0.00000000000001,
max_iter=10000000000000, positive=True)
clf.fit(A,b)
我收到错误:
usr/local/lib/python2.7/dist-packages/scikit_learn-0.14.1-py2.7-linux-x86_64.egg/
sklearn/linear_model/coordinate_descent.py:418: UserWarning: Objective did not
converge. You might want to increase the number of iterations
' to increase the number of iterations')
有趣的是,A从来没有排名低效。 (我认为)
答案 0 :(得分:8)
尝试增加tol。
tol:float,optional
优化的容差:如果更新小于tol,则优化代码检查双重间隙的最优性和 继续,直到它小于tol。
对于我的scikit-learn版本,tol的默认值为0.0001。我假设您的容差非常小,以至于优化永远不会达到较低的值。
答案 1 :(得分:4)
SOMETIMES唯一可以帮助我摆脱警告的地方是,显着增加了迭代次数(显着增加了培训时间)。
增加公差总是会导致相同的警告,但是警告值较大,并且不会消除警告。不知道为什么。
作为重要的分析性说明,我解释说最初将Lasso回归用作不良信号时会收到此警告,无论接下来发生什么。
对我来说,它实际上总是发生在模型过度拟合的情况下,这意味着它在完整的训练集上表现良好,但在交叉验证和测试期间表现不佳。
不管我是抑制警告(有一种方法)还是通过增加迭代次数“自然地”消除了警告,我几乎总是不得不回过头来简化套索才能使Lasso有效(并且在某些情况下,完全放弃套索而改用其他模型。
答案 2 :(得分:1)
我也遇到了同样的问题。根据数据种类,使用 normalize=True 选项也有助于使模型收敛。