如何使用 scikit-learn 执行非正则化逻辑回归?

Posted

技术标签:

【中文标题】如何使用 scikit-learn 执行非正则化逻辑回归?【英文标题】:How to perform an unregularized logistic regression using scikit-learn? 【发布时间】:2017-09-11 21:01:51 【问题描述】:

来自 scikit-learn 的 documentation,默认惩罚为“l2”,C(正则化强度的倒数)为“1”。如果我保持这个设置的惩罚='l2'和C=1.0,这是否意味着训练算法是一个非正则化的逻辑回归?相反,当 C 不是 1.0 时,它是一个正则化逻辑回归分类器?

【问题讨论】:

【参考方案1】:

不,不是那样的。

让我们看看sklearn's user-guide中的定义:

我们看到:

C 乘以损失,而左项(正则化)保持不变

这意味着:

如果不修改代码,您永远无法完全关闭正则化 但是:您可以通过将C 设置为一个很大的数字来近似关闭正则化! 由于优化试图最小化正则化惩罚和损失的总和,增加C 会降低正则化惩罚的相关性

【讨论】:

【参考方案2】:

首先,将C 设置为一个较大的值(相对于您的预期系数)。

如果不适合你,也设置penalty='l1'

【讨论】:

以上是关于如何使用 scikit-learn 执行非正则化逻辑回归?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 scikit-learn 中使用随机逻辑回归找到最低的正则化参数 (C)?

python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?

如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

如何调整 scale scikit-learn Logistic Regression coeffs 以对非缩放数据集进行评分?

执行 scikit-learn 剪影分数时如何修复内存错误?

scikit-learn 文本矢量化器的正则表达式/“token_pattern”