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.
你真的应该想想为什么有些特征是完全相关的。
我正在尝试使用 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.
你真的应该想想为什么有些特征是完全相关的。