【问题标题】:Logistic Regression with sklearn使用 sklearn 进行逻辑回归
【发布时间】:2015-12-19 21:24:26
【问题描述】:

不确定这是否适合回答这个问题,但有人告诉我 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

非常感谢您!

【问题讨论】:

    标签: python scikit-learn classification logistic-regression


    【解决方案1】:

    1) 对于逻辑回归,没有。您没有计算实例之间的距离。

    2) 您可以指定penalty='l1'penalty='l2' 参数。请参阅LogisticRegression page。 L2 惩罚是默认的。

    3) scikit-learn 提供了多种显式特征选择技术,例如使用SelectKBestchi2 排名函数。

    4) 你会想为最佳参数做一个Grid Search

    有关所有这些问题的更多详细信息,我建议查看一些Examples,例如this onethis one

    【讨论】:

    • 谢谢。一个令人困惑的问题是关于 2):我认为惩罚与正则化是不同的概念。我认为惩罚是指分类错误惩罚,而不是正则化惩罚。还是我很困惑?
    • 另外,我认为您需要规范化,因为如果您要使用一些正则化,即套索样式,您需要对输入数据进行规范化,不是吗?
    • 逻辑回归的参数是通过最大(对数)似然来学习的,因此不存在线性或二次误差惩罚的问题。如果您正在进行正则化,那么是的,您可能希望标准化或规范化您的数据。您必须使用它来查看到底是哪一个(例如是否有异常值)。
    • 感谢您的解释,在我接受您的回答之前,我还有一些问题。例如,您在上面说“如果要进行正则化,则需要标准化”。但是在sklearn中,根据上面的2),你总是做penalty='l1'或者'l2',这不是说你总是做正则化吗?你如何在没有正则化的情况下在 sklearn 中运行?您介意发布一个说明各种正则化用法的小代码 sn-p 吗?
    • @BaronYugovich 抱歉耽搁了。它确实看起来好像你必须在 sklearn 中进行正则化(你可以通过一个非常小的惩罚常数来解决这个问题)。至于示例代码 sn-ps,我强烈建议使用教程。
    猜你喜欢
    • 2020-11-09
    • 2015-05-04
    • 2016-03-06
    • 2014-01-20
    • 2015-02-21
    • 2018-08-11
    • 1970-01-01
    • 2020-10-18
    • 2021-03-11
    相关资源
    最近更新 更多