首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复Statsmodel警告:“超过最大迭代次数”

如何修复Statsmodel警告:“超过最大迭代次数”
EN

Stack Overflow用户
提问于 2015-10-04 02:58:21
回答 2查看 27.3K关注 0票数 10

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

代码语言:javascript
运行
复制
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)

为什么我会收到这个警告,我该如何解决这个问题?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-10-04 03:29:36

有两种可能性

1)困难的优化问题:通常Logit收敛速度很快,默认迭代次数很少。在大多数情况下,在对fit的调用中添加一个更大的maxiter关键字或将以前的结果改写为start_params会有所帮助。

2)由于这是Logit,所以有可能存在完全分离或准完全分离。在这种情况下,一些参数可能会偏离无穷大,并且优化会在某个收敛或停止准则处停止。Logit检测完全分离的简单情况并引发异常,但可能存在未检测到的部分分离。使用完美分离,您可以在某些或所有情况下获得完美的可预测性,这对预测很有用,但会在估计和识别参数时带来问题。更多信息在这里,例如,https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression,还有一些关于统计模型的常见问题,github问题,角落情况的问题,以及类似这样的问题。

票数 10
EN

Stack Overflow用户

发布于 2019-03-27 15:34:02

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32926299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档