【问题标题】:How to fix Statsmodel warning: "Maximum no. of iterations has exceeded"如何修复 Statsmodel 警告:“已超过最大迭代次数”
【发布时间】:2015-10-03 18:58:20
【问题描述】:

我正在使用 Anaconda,我正在尝试逻辑回归。加载训练数据集并执行回归后。然后我收到以下警告消息。

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)

为什么我会收到此警告,我该如何解决? 谢谢!

【问题讨论】:

    标签: python warnings anaconda logistic-regression statsmodels


    【解决方案1】:

    有两种可能

    1) 优化困难问题:通常Logit收敛速度很快,默认的迭代次数设置得很低。在对fit 的调用中添加更大的maxiter 关键字或将之前的结果重新拟合为start_params 在大多数情况下都有帮助。

    2)由于这是Logit,所以可能存在完全分离,或准完全分离。在这种情况下,某些参数可能会变为无穷大,并且优化会在某个收敛或停止标准处停止。 Logit 检测完全分离的简单情况并引发异常,但可能存在未检测到的部分分离。通过完美分离,您可以获得部分或所有情况的完美可预测性,这对预测很有用,但会导致估计和识别参数时出现问题。 更多信息例如在这里https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression 还有几个关于 statsmodels github 问题的常见问题解答问题,用于极端情况和此类问题。

    【讨论】:

      【解决方案2】:

      检查所有变量的水平。其中一个可能会拥有一个类别的近 99%。因此难以收敛。 我通过从数据集中删除该变量来解决它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-13
        • 2019-07-04
        • 1970-01-01
        • 2015-12-25
        • 2013-12-25
        • 2011-06-17
        • 1970-01-01
        相关资源
        最近更新 更多