【发布时间】:2017-11-05 13:10:48
【问题描述】:
我正在尝试使用 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)
但仍然是同样的错误。 (即使我设置了较低的相关阈值)。
我也尝试更改求解器。
【问题讨论】:
-
试试 df.corr() - 这会返回数据框中数字列之间的相关矩阵。从中您可以检查您的任何两个特征是否完全相关。
-
@Johannes Wachs ,我删除了相关的功能并且它有效。 tnx.
-
请参阅stackoverflow.com/a/13313828/333700,了解如何使用 QR 查找所有共线或线性独立的列
标签: python matrix logistic-regression summary matrix-inverse