【问题标题】:Python and SPSS giving different output for Logistic RegressionPython 和 SPSS 为 Logistic 回归提供不同的输出
【发布时间】:2017-07-25 22:32:51
【问题描述】:

代码:

from sklearn.linear_model import LogisticRegression
l = LogisticRegression()
b = l.fit(XT,Y)
    print "coeff ",b.coef_
    print "intercept ",b.intercept_

这是数据集

XT =
[[23]
 [24]
 [26]
 [21]
 [29]
 [31]
 [27]
 [24]
 [22]
 [23]]
Y = [1 0 1 0 0 1 1 0 1 0]

结果:

coeff  [[ 0.00850441]]
intercept  [-0.15184511

现在我在 spss.Analyse->Regression->Binary Logistic Regression 中添加了相同的数据。我设置了相应的 Y -> 依赖和 XT -> 协变量。结果甚至不接近。我在 python 或 SPSS 中遗漏了什么吗? Python-Sklearn

【问题讨论】:

    标签: python scikit-learn logistic-regression spss


    【解决方案1】:

    自己解决了它。我尝试在LinearRegression(C=100)中更改C值。那成功了。 C=1000获得了最接近@ 987654323的结果@和textbook结果。

    希望这有助于任何面临任何问题的人在python 987654326 @。

    【讨论】:

    • 所以我得到了另一个问题。为什么默认的C值不是在SPSS或教科书中给出结果?我错过了什么吗?
    【解决方案2】:

    SPSS 逻辑回归在其成本函数中不包括参数正则化,它只是进行“原始”逻辑回归。在正则化中,成本函数包括一个正则化表达式以防止过度拟合。您可以使用 C 值指定它的倒数。如果您将 C 设置为一个非常高的值,它将与 SPSS 非常相似,因此没有神奇的数字 - 只需将其设置得尽可能高,就不会进行正则化。

    【讨论】:

      【解决方案3】:

      使用sklearn,您还可以通过将惩罚设置为None 来“关闭”正则化。然后,将不应用正则化。与 SPSS 相比,这将为 sklearn 中的逻辑回归提供类似的结果。

      sklearn 进行 1000 次迭代且没有惩罚的逻辑回归示例如下:

      from sklearn.linear_model import LogisticRegression
      lr = LogisticRegression(max_iter=1000, penalty='none')
      

      【讨论】:

      • 请转至how to answer。预计提供步骤或最少的工作代码。
      猜你喜欢
      • 1970-01-01
      • 2016-09-18
      • 2013-10-08
      • 2020-02-04
      • 2020-10-27
      • 2015-09-17
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多