python - 在python中使用statsmodels错误进行逻辑回归

原文 标签 python matrix logistic-regression summary matrix-inverse

我正在尝试使用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)


但仍然是相同的错误。 (即使我设置了较低的相关阈值)。

我也尝试更改求解器。

最佳答案

如评论中所建议,如果两个功能完全相关,则该模型将无法运行。如果您的熊猫数据框的列数较少,检查此问题的最简单方法是在数据框上调用.corr() method-在本例中为df.corr(),并检查是否有一对特征的相关性为= 1。

您应该真正考虑一下为什么某些功能完美地相关。

相关文章:

python - tensorflow:如何旋转图像进行数据扩充?

c++ - 如何使用Rcpp缩放NumericMatrix?

c++ - 不同模型的转换不起作用

python - 在hyperopt中设置条件搜索空间时出现问题

python - 添加到购物车数量Django

python - 如何在熊猫数据框中使用NaN替换一定范围的值?

python - 有没有办法更改AWS Lambda函数的'scratch'(/ tmp)空间位置?

sql-server - 如何通过SQL确定矩阵是否为“正定”?

python - 如何从Tensorflow高级API恢复经过训练的LinearClassifier并进行预测

machine-learning - 此数据集的Logistic回归和朴素贝叶斯