代码:
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->回归 - >二元Logistic回归中添加了相同的数据。我设置了相应的Y - >依赖和XT - >协变量。结果甚至没有结束。我错过了python或SPSS中的内容吗?
Python的Sklearn
答案 0 :(得分:2)
自己解决了。我尝试更改LinearRegression中的C值(C = 100)。这就是诀窍。 C = 1000得到的结果最接近SPSS和教科书结果。希望这能帮助任何在python中遇到LogisticRegression问题的人。
答案 1 :(得分:1)
SPSS Logistic回归的成本函数中不包括参数正则化,它只是“原始” logistic回归。在正则化中,成本函数包含一个正则化表达式以防止过度拟合。您可以使用C值指定其倒数。如果将C设置为非常高的值,它将紧密模拟SPSS,因此就没有幻数-只要将其设置为尽可能高的值,就不会有正则化。
答案 2 :(得分:1)
使用 sklearn
,您还可以通过将惩罚设置为 None
来“关闭”正则化。然后,将不应用正则化。与 SPSS 相比,这将为 sklearn
中的逻辑回归提供类似的结果。
来自 sklearn
的具有 1000 次迭代且没有惩罚的逻辑回归示例是:
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(max_iter=1000, penalty='none')