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

Statsmodels多分类逻辑回归输出全为NaN值问题排查

解决MNLogit拟合全NaN结果及数值警告问题

问题场景

使用statsmodels的MNLogit拟合多分类逻辑回归时,出现输出全为NaN的结果,同时触发两个RuntimeWarning。相关细节如下:

用于拟合的代码:

X = sm.add_constant(df)
logreg_model = sm.MNLogit(y[:n], X).fit()

数据情况:

  • 输入特征df仅包含debt列,其中绝大多数值为0.00,仅存在2个非0值
  • 确认数据中无NaN值

触发的警告信息:

RuntimeWarning: overflow encountered in exp
  eXB = np.column_stack((np.ones(len(X)), np.exp(X)))
RuntimeWarning: invalid value encountered in divide
  return eXB/eXB.sum(1)[:,None]

最终输出结果全为NaN:

Dep. Variable:                      y   No. Observations:                   50
Model:                        MNLogit   Df Residuals:                       12
Method:                           MLE   Df Model:                           19
Date:                Thu, 08 Jun 2023   Pseudo R-squ.:                     nan
Time:                        14:19:33   Log-Likelihood:                    nan
converged:                       True   LL-Null:                       -138.74
Covariance Type:            nonrobust   LLR p-value:                       nan
==============================================================================
       y=6       coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const             nan        nan        nan        nan         nan         nan
debt              nan        nan        nan        nan         nan         nan

问题原因

核心问题是特征debt的方差几乎为0:绝大多数样本值相同(0.00),仅两个异常值,这种情况下最大似然估计(MLE)无法得到有效的参数解。计算过程中,np.exp(X)会因极端值溢出产生inf,后续的除法操作就会生成NaN,最终导致所有结果失效。标准化操作无法解决该问题——标准化仅调整变量尺度,无法提升变量的方差。

解决办法

  1. 处理低方差特征
    • 若debt对预测目标无实际意义,直接从特征集中移除;
    • 若必须保留,可将其转换为二分类特征(0 vs 非0),或与其他特征组合构建新的有效特征;
  2. 检查目标变量分布
    确认目标变量y的类别是否存在极端不平衡(某类别样本量极少),这类情况也会导致拟合失败,必要时可合并类别或使用过采样/欠采样调整样本分布;
  3. 调整拟合参数
    在fit()方法中尝试指定数值更稳定的优化器,比如method='bfgs',或调整maxiter增加迭代次数,但这只能作为辅助手段,核心仍需解决低方差特征问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:35:24