【问题标题】:FutureWarning in scikit-learn Logistic Regression solverscikit-learn 逻辑回归求解器中的 FutureWarning
【发布时间】:2020-07-27 00:22:17
【问题描述】:

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

我怎样才能摆脱这个弃用警告?

【问题讨论】:

    标签: python scikit-learn logistic-regression


    【解决方案1】:

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

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

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

    因此,为了避免此更改带来的意外,scikit-learn 会在默认情况下警告您此更改出现在未来的版本中,以确保您的代码面向未来。

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

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

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

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

    【讨论】:

      【解决方案2】:

      尝试使用

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

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

      【讨论】:

        【解决方案3】:

        嗯,警告信息告诉你。您需要做的就是明确指定要使用的求解器:

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

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

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

        【讨论】:

          猜你喜欢
          • 2017-03-31
          • 2016-02-21
          • 2016-07-31
          • 2018-03-01
          • 2012-06-27
          • 2016-06-17
          • 2016-12-27
          • 2018-09-23
          • 2015-04-27
          相关资源
          最近更新 更多