如何实现 L1 逻辑回归?

Posted

技术标签:

【中文标题】如何实现 L1 逻辑回归?【英文标题】:How to implement L1 logistic regression? 【发布时间】:2020-05-09 21:20:57 【问题描述】:

作为学习课程的一部分,我尝试在 Python 中使用 scikit-learn 实现 L1 逻辑回归。不幸的是代码

clf, pred = fit_and_plot_classifier(LogisticRegression(penalty = 'l1', C=1000000))

我收到错误消息

ValueError: Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.

我尝试设置 l1_ratio

clf, pred = fit_and_plot_classifier(LogisticRegression(l1_ratio = 1))

但收到错误消息

C:\Users\HP\Anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py:1499: UserWarning: l1_ratio parameter is only used when penalty is 'elasticnet'. Got (penalty=l2)"(penalty=)".format(self.penalty))

那么,如何实现 L1 Logistic 回归?

【问题讨论】:

【参考方案1】:

你可以像在第一个代码 sn-p 中那样做,但你必须定义另一个求解器。使用“liblinear”或“saga”,check more in the documentation。

【讨论】:

感谢您的回答。我认为它解决了这个问题。所以,我必须使用 clf, pred = fit_and_plot_classifier(LogisticRegression(solver='saga', 惩罚 = 'l1', C=1000000)) - 如果求解器是 'saga' - 否? 由于某种原因,上面带有惩罚的代码,“l2”也产生了完全相同的情节。 我认为情节相同的原因是由于 C 非常高。对于默认值 C=1,这些图肯定不同。

以上是关于如何实现 L1 逻辑回归?的主要内容,如果未能解决你的问题,请参考以下文章

使用正则化 (L1 / L2) Lasso 和 Ridge 的逻辑回归模型

如何在逻辑回归中找到 C 的最佳值?

7逻辑回归实践

7逻辑回归实践

逻辑回归正则化感知机

逻辑回归正则化感知机