Python 如何修复Statsmodel警告:“;最大迭代次数已超过;

Python 如何修复Statsmodel警告:“;最大迭代次数已超过;,python,warnings,anaconda,logistic-regression,statsmodels,Python,Warnings,Anaconda,Logistic Regression,Statsmodels,我正在使用蟒蛇,我正在尝试逻辑回归。加载训练数据集并执行回归后。然后我得到了以下警告信息 train_cols = data.columns[1:] logit = sm.Logit(data['harmful'], data[train_cols]) result = logit.fit() Warning: Maximum number of iterations has been exceeded. Current function value: 0.000004 I

我正在使用蟒蛇,我正在尝试逻辑回归。加载训练数据集并执行回归后。然后我得到了以下警告信息

train_cols = data.columns[1:]
logit = sm.Logit(data['harmful'], data[train_cols])
result = logit.fit() 
Warning: Maximum number of iterations has been exceeded.
     Current function value: 0.000004
     Iterations: 35
C:\Users\dell\Anaconda\lib\site-packages\statsmodels\base\model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals"Check mle_retvals", ConvergenceWarning)
为什么我会收到此警告?如何修复此警告?
谢谢

有两种可能性

1) 优化难题:通常Logit收敛速度非常快,默认迭代次数设置得非常低。在调用
fit
时添加一个较大的
maxiter
关键字,或者将以前的结果重新设置为
start\u params
在大多数情况下都有帮助

2) 因为这是Logit,所以可能存在完全分离或准完全分离。在这种情况下,一些参数可能会变为无穷大,优化会在某个收敛或停止标准处停止。Logit检测完全分离的简单情况并引发异常,但可能存在未检测到的部分分离。通过完美分离,您可以对某些或所有情况获得完美的可预测性,这对预测很有用,但会在估计和识别参数时产生问题。
更多信息,例如,这里还有几个常见问题,关于statsmodels github,角落案例和类似问题的问题。

检查所有变量的级别。他们中的一个可能拥有几乎99%的一个类别。因此很难收敛。 我通过从数据集中删除该变量解决了这个问题