使用sklearn进行逻辑回归

6

不确定这是否是一个很好的地方提出这个问题,但我被告知CrossValidated不是。因此,所有这些问题都涉及sklearn,但如果您对逻辑回归有一般性的见解,我也很想听听。

1)数据必须标准化(平均值为0,标准差为1)吗?
2)在sklearn中,我如何指定我想要什么类型的正则化(L1 vs L2)?请注意,这与惩罚不同;惩罚是指分类错误,而不是系数惩罚。
3)我该如何使用来进行变量选择?即类似于线性回归的套索。
4)在使用正则化时,我如何优化C,即正则化强度?是否内置了某些功能,还是我必须自己处理?

可能最有帮助的是一个例子,但我会感激任何有关这些问题的见解。

这是我的起点:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

非常感谢您的帮助!

1个回答

6

1) 对于逻辑回归,不是计算实例之间的距离。

2) 您可以指定penalty='l1'penalty='l2'参数。请参阅LogisticRegression页面。默认为L2惩罚。

3) scikit-learn提供了各种显式特征选择技术,例如使用SelectKBest chi2 排名功能。

4) 您将想要进行网格搜索 以获得最佳参数。

有关所有这些问题的更多详细信息,建议查看一些示例,例如此示例此示例


谢谢。有一个困惑的问题是关于2):我认为惩罚是一个不同于正则化的概念。我认为惩罚是指分类错误惩罚,而不是正则化惩罚。或者我混淆了吗? - Baron Yugovich
另外,我认为你需要进行归一化处理,因为如果你要使用某些正则化方法,例如套索回归,你需要对输入数据进行归一化处理,不是吗? - Baron Yugovich
逻辑回归的参数是通过最大(对数)似然学习的,因此不存在线性或二次误差惩罚的问题。如果您正在进行正则化,则可能需要标准化或规范化数据。您将不得不尝试一下,以确定哪种方法最适合您的数据(例如,是否存在异常值)。 - Ansari
感谢您的解释,在我接受您的答案之前,我还有一些问题。例如,您在上面说“如果您正在进行正则化,则需要标准化”。但是在sklearn中,根据上面的2),您始终执行penalty ='l1'或'l2',这是否意味着您始终执行正则化?如何在sklearn中运行无正则化?您介意发布一个小的代码片段,说明各种正则化用法吗? - Baron Yugovich
@BaronYugovich 抱歉耽搁了。看起来你确实需要在sklearn中进行正则化(你可以通过设置极小的惩罚常数来规避这个问题)。至于示例代码片段,我强烈建议参考教程。 - Ansari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接