use*_*134 4 python warnings statsmodels convergence
Python和熊猫新手在这里.我正在尝试使用statsmodels来拟合逻辑回归来计算选民投票的概率.我在区域工作; 所以有时函数不会收敛,我得到以下错误:警告:已超过最大迭代次数.
我已经将最大迭代次数增加到1000.然后我尝试将"警告"变成异常.我已导入警告并包含warnings.simplefilter('error',Warning)以尝试捕获它,但它似乎不是真正的Python警告.相反,它是statsmodels在达到最大迭代次数时打印出来的东西.
所以现在我想知道是否有办法说:
if sm.Logit(y, covs).fit(maxiter=1000) doesn't converge:
    do something else
Run Code Online (Sandbox Code Playgroud)
    编辑:您还可以检查返回结果类中的收敛标志,并在模型未收敛时自己引发此异常.例如,
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
Run Code Online (Sandbox Code Playgroud)
实际上,这些警告都是打印出来的.那是不好的形式.我提出了一个问题.PR对此表示欢迎.
https://github.com/statsmodels/statsmodels/issues/1281
或者,尝试通过method关键字使用其他解算器.希望他们在途中会提出适当的警告或例外.
如果您可以在该问题上共享导致此问题的数据,那么这将有所帮助.可能还有其他事情发生.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1545 次  |  
        
|   最近记录:  |