【发布时间】:2014-09-15 11:30:58
【问题描述】:
我很确定这是一项功能,而不是错误,但我想知道是否有办法使 sklearn 和 statsmodels 在他们的 logit 估计值中匹配。一个很简单的例子:
import numpy as np
import statsmodels.formula.api as sm
from sklearn.linear_model import LogisticRegression
np.random.seed(123)
n = 100
y = np.random.random_integers(0, 1, n)
x = np.random.random((n, 2))
# Constant term
x[:, 0] = 1.
statsmodels 的估计:
sm_lgt = sm.Logit(y, x).fit()
Optimization terminated successfully.
Current function value: 0.675320
Iterations 4
print sm_lgt.params
[ 0.38442 -1.1429183]
还有sklearn的估计:
sk_lgt = LogisticRegression(fit_intercept=False).fit(x, y)
print sk_lgt.coef_
[[ 0.16546794 -0.72637982]]
我认为这与sklearn 中的实现有关,它使用了某种正则化。有没有像statsmodels 那样估计准系统logit 的选项(它的速度要快得多,并且可以更好地扩展)。另外,sklearn 是否提供推断(标准错误)或边际效应?
【问题讨论】:
标签: python statistics scikit-learn statsmodels logistic-regression