ValueError:求解器 lbfgs 仅支持“l2”或“无”惩罚,得到 l1 惩罚

新手上路,请多包涵

我正在运行分类问题的特征选择过程,使用嵌入式方法(L1 - 套索)和 LogisticRegression。

我正在运行以下代码:

 from sklearn.linear_model import Lasso, LogisticRegression
from sklearn.feature_selection import SelectFromModel

# using logistic regression with penalty l1.
selection = SelectFromModel(LogisticRegression(C=1, penalty='l1'))
selection.fit(x_train, y_train)

但是我遇到异常(在 fit 命令上):

    selection.fit(x_train, y_train)
   File "C:\Python37\lib\site-packages\sklearn\feature_selection_from_model.py", line 222, in fit
   self.estimator_.fit(X, y, **fit_params)
   File "C:\Python37\lib\site-packages\sklearn\linear_model_logistic.py", line 1488, in fit
   solver = _check_solver(self.solver, self.penalty, self.dual)
   File "C:\Python37\lib\site-packages\sklearn\linear_model_logistic.py", line 445, in _check_solver
   "got %s penalty." % (solver, penalty))
   ValueError: Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.

我在 python 3.7.6 和 s scikit-learn version is 0.22.2.post1 下运行

出了什么问题,我该如何解决?

原文由 user3668129 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

这在 文档 中得到了澄清。

求解器: {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=‘lbfgs’

  • ‘newton-cg’、’lbfgs’、’sag’ 和 ‘saga’ 处理 L2 或无惩罚

  • ‘liblinear’ 和 ‘saga’ 也处理 L1 惩罚

像这样称呼它:

 LogisticRegression(C=1, penalty='l1', solver='liblinear')

原文由 Arya McCarthy 发布,翻译遵循 CC BY-SA 4.0 许可协议

只需尝试指定您要使用的求解器,然后错误就会消失。 l1 支持 ‘liblinear’ 和 ‘saga’ L2 处理 newton-cg’、’lbfgs’、’sag’ 和 ‘saga’

 clf = LogisticRegression(C=0.01, penalty='l1',solver='liblinear');

原文由 CreatorGhost 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏