如何将Statsmodels警告转换为异常

2024-09-27 23:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是Python和熊猫新手。我试图用statsmodels来拟合逻辑回归来计算投票者投票的概率。我在辖区级别工作;所以有时函数不收敛,我得到以下错误:警告:已超过最大迭代次数。在

我已经将最大迭代次数增加到1000次。然后我试图把这个“警告”变成一个例外。我已导入警告并包含警告。simplefilter('error',Warning)尝试捕获它,但它似乎不是真正的Python警告。相反,它是statsmodels在达到最大迭代次数时打印出来的东西。在

所以现在我想知道有没有办法说:

if sm.Logit(y, covs).fit(maxiter=1000) doesn't converge:
    do something else

Tags: 函数警告错误error逻辑投票概率级别
1条回答
网友
1楼 · 发布于 2024-09-27 23:18:16

编辑:您还可以检查返回的results类中的converged标志,并在模型未收敛时自己引发此异常。例如

dta = sm.datasets.spector.load_pandas()

y = dta.endog
X = dta.exog
X['const'] = 1

mod = sm.Logit(y, X).fit()

if not mod.mle_retvals['converged']:
    do something else

事实上,这些警告已经打印出来了。那是不好的形式。我提出了一个问题。PRs对此表示欢迎。在

https://github.com/statsmodels/statsmodels/issues/1281

或者,尝试通过method关键字使用另一个解算器。希望他们能在路上提出适当的警告或例外。在

如果你能分享导致这个问题的数据,那会很有帮助。可能还有别的事。在

相关问题 更多 >

    热门问题