scikit-学习Logistic回归求解器中的FutureWarning

时间:2020-04-14 09:50:03

标签: python scikit-learn logistic-regression

我一直在使用有关Udemy的课程来学习机器学习。我发现了很多不推荐使用的代码,现在出现了这个问题:

代码:

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)

警告:

C:\Users\admin\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)

如何摆脱此弃用警告?

3 个答案:

答案 0 :(得分:3)

好吧,警告消息正在告诉您。您需要做的就是明确指定要使用的求解器:

classifier = LogisticRegression(random_state = 0, solver='lbfgs')

(或您要使用的任何其他求解器)

有关可用选项,请参见the sklearn docs

答案 1 :(得分:3)

在您可能使用的scikit-learn v0.20中,solver中使用的LogisticRegression的默认值为liblinear;来自docs

求解器: str,{'newton-cg','lbfgs','liblinear','sag','saga'},默认值:'liblinear'

这在v0.22(最新)中更改为lbfgs

因此,为了避免对此更改感到惊讶,scikit-learn将警告您进行默认更改,即用于将来的版本,以使您的代码永不过时。 / p>

要摆脱它,只需在您的LogisticRegression定义中明确定义一个求解器,即

classifier = LogisticRegression(random_state = 0, solver='lbfgs') # default in v0.22

classifier = LogisticRegression(random_state = 0, solver='liblinear') # default until v0.21

上面提供的第一个文档链接显示了所有可用选项,以及对每个选项的一些简短评论/建议。

答案 2 :(得分:1)

尝试使用

classifier = LogisticRegression(random_state=0, solver="liblinear")

文档中的检出求解器参数:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html