python 中使用 statsmodels 错误的逻辑回归

logistic regression using statsmodels error in python

我正在尝试使用 statsmodels 实施逻辑回归(我需要摘要)但我收到此错误:

LinAlgError: Singular matrix

我的df是数字相关的,我删除了非数字和常量特征。 由于相关特征,我尝试实现正则回归以及带有 l1 惩罚的回归(l2 不可用)。

我试图检查矩阵等级并得到了这个打印:

print(len(df.columns)) -> 156

print(np.linalg.matrix_rank(df.values)) -> 151

我怎么知道哪些功能有问题,为什么?

我的代码:

logit = sm.Logit(y,X)

result = logit.fit_regularized(trim_mode='auto', alpha=0,maxiter=150)

print(result.summary())

更新:

删除高度相关的特征后,我得到:

  len(df.columns) =  np.linalg.matrix_rank(df.values)

但还是一样的错误。 (即使我设置了一个低相关阈值)。

我也尝试更改求解器。

如评论中所建议,如果两个特征完全相关,则模型不会 运行。如果您有一个包含少量列的 pandas 数据框,最简单的检查方法是在您的数据框上调用 .corr() method - 在本例中为 df.corr(),并检查是否有特征对的相关性 =1.

你真的应该想想为什么有些特征是完全相关的。