You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn与statsmodels的Logistic回归结果不一致的原因及对齐方法

差异原因
  • 核心原因是正则化默认配置不同:sklearn的LogisticRegression默认启用L2正则化(penalty='l2'),正则化强度参数C=1.0,会让拟合得到的系数绝对值向0收缩;statsmodels的Logit默认执行无正则化的最大似然估计,没有这个收缩效应,这是观测到系数差异的主要来源。
  • 次要原因是迭代参数默认值不同:两者的LBFGS求解器默认的迭代收敛阈值、最大迭代次数存在细微差异,在部分数据集上可能带来极小的数值误差。
对齐输出的调整方法

把sklearn的逻辑回归配置修改为无正则化,和statsmodels的默认逻辑对齐即可,只需修改sklearn模型初始化的代码:
原有代码:

model_1 = linear_model.LogisticRegression(solver = 'lbfgs')

修改为:

# 关闭正则化,和statsmodels默认行为对齐
model_1 = linear_model.LogisticRegression(solver='lbfgs', penalty=None)

如果使用的sklearn版本低于0.22不支持penalty=None,可以把正则化强度参数C设置为极大值来近似取消正则化效果:

# 低版本sklearn兼容写法
model_1 = linear_model.LogisticRegression(solver='lbfgs', C=1e10)

修改后重新运行代码,两者输出的斜率、截距只会存在浮点计算带来的可忽略的微小差异,结果完全一致。

内容的提问来源于stack exchange,提问作者H42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:03