收敛警告:Liblinear无法收敛,增加了迭代次数

时间:2018-10-05 16:41:13

标签: python opencv lbph-algorithm

运行Adrian的线性二进制模式代码。该程序运行,但发出以下警告:

C:\Python27\lib\site-packages\sklearn\svm\base.py:922: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
 "the number of iterations.", ConvergenceWarning

我正在使用opencv3.7运行python2.7,该怎么办?

4 个答案:

答案 0 :(得分:19)

我达到了我设定的级别,直到我的max_iter=1200000分类器上的LinearSVC为止,但“ ConvergenceWarning” 仍然存在。我通过仅设置dual=False并将max_iter保留为默认值来解决此问题。

使用LogisticRegression(solver='lbfgs')分类器,您应该增加max_iter。当使用大型数据集的特征进行训练时,“收敛警告” 消失之前,我的max_iter=7600已经到达。

答案 1 :(得分:10)

通常,当优化算法无法收敛时,通常是因为问题条件不佳,可能是由于决策变量的缩放比例不佳。您可以尝试一些方法。

  1. 标准化您的训练数据,以使问题有望变得更好 有条件的,反过来可以加快收敛。一 可能是将您的数据缩放为0平均值,使用 Scikit-Learn's StandardScaler 举个例子请注意,您必须将训练数据上安装的StandardScaler应用于测试数据。
  2. 与1相关),请确保其他参数(例如正则化) 权重C已正确设置。
  3. max_iter设置为更大的值。默认值为1000。

答案 2 :(得分:7)

明确指定max_iter可以解决警告,因为默认的max_iter为100。[对于Logistic回归]。

 logreg = LogisticRegression(max_iter=1000)

答案 3 :(得分:2)

请将max_iter递增到10000,默认值为1000。的迭代将有助于算法收敛。对我来说,它收敛了,求解器是-'lbfgs'

log_reg = LogisticRegression(solver='lbfgs',class_weight='balanced', max_iter=10000)