python – “statsmodels”和“sklearn”中的Logit估计器
发布时间:2020-12-20 11:36:37 所属栏目:Python 来源:网络整理
导读:我很确定它是一个功能,而不是一个bug,但我想知道是否有办法让sklearn和statsmodel在logit估计中匹配.一个非常简单的例子: import numpy as npimport statsmodels.formula.api as smfrom sklearn.linear_model import LogisticRegressionnp.random.seed(123)
我很确定它是一个功能,而不是一个bug,但我想知道是否有办法让sklearn和statsmodel在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中的实现有关,它使用某种正则化.有没有选择来估计一个准分子logit,就像在statsmodels中一样(它的速度更快,扩展性更好).另外,sklearn是否提供推理(标准错误)或边际效应? 解决方法
您可以将C(反正则化强度)参数设置为任意高的常数,只要它是有限的: >>> sk_lgt = LogisticRegression(fit_intercept=False,C=1e9).fit(x,y) >>> print(sk_lgt.coef_) [[ 0.38440594 -1.14287175]] 关闭正则化是不可能的,因为底层求解器Liblinear不支持这一点.
没有.有一个建议添加这个,但它还没有在主代码库中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |