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

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

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

本文翻译自 https://stackoverflow.com/questions/47121953/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 python matrix logistic-regression summary matrix-inverse


相关文章:

python - 如何将多个参数传递给apply函数

python - 安装Python lineprofiler时出错

c - 矩阵乘法的以下函数中是否有错误?

c++ - 一个矩阵中的数据会自动复制到C ++中的opencv中的另一个矩阵中

machine-learning - Vowpal Wabbit中逻辑回归所需的参数是什么?

python - PCA是否降低了Logistic回归的性能? [重复]

python - 将网格从中心坐标重新采样到外部(即角)坐标

python - Python修改xml文件

python - 用Python切片矩阵

python - fmin_ncg没有返回优化结果