"statsmodels"和"sklearn"中的Logit估算器

Dan*_*Bel 4 python statistics scikit-learn statsmodels logistic-regression

我敢肯定它是一个功能,而不是一个错误,但我想知道是否有一种方法,使sklearnstatsmodels比赛中他们的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.
Run Code Online (Sandbox Code Playgroud)

估计数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]
Run Code Online (Sandbox Code Playgroud)

估计与sklearn:

sk_lgt = LogisticRegression(fit_intercept=False).fit(x, y)
print sk_lgt.coef_
    [[ 0.16546794 -0.72637982]]
Run Code Online (Sandbox Code Playgroud)

我认为这与实现有关sklearn,它使用某种正规化.是否可以选择估计一个准系统logit statsmodels(它的速度更快,并且可以更好地扩展).此外,是否sklearn提供推理(标准错误)或边际效应?

Fre*_*Foo 8

是否可以选择估计准系统logit,如同 statsmodels

您可以将C(反正则化强度)参数设置为任意高的常数,只要它是有限的:

>>> sk_lgt = LogisticRegression(fit_intercept=False, C=1e9).fit(x, y)
>>> print(sk_lgt.coef_)
[[ 0.38440594 -1.14287175]]
Run Code Online (Sandbox Code Playgroud)

关闭正则化是不可能的,因为底层求解器Liblinear不支持这一点.

此外,是否sklearn提供推理(标准错误)或边际效应?

没有.有一个建议添加这个,但它还没有在主代码库中.