PyMC3运行报错AttributeError:模块'arviz'无'geweke'属性如何解决?
报错原因
ArviZ 0.12.0及以上版本移除了旧版内置的geweke收敛性检验接口,而你使用的PyMC3版本默认依赖该接口,版本不匹配触发属性缺失报错。
报错详情
报错代码:AttributeError: module 'arviz' has no attribute 'geweke'
完整报错堆栈:
修复方案
- 方案1:降级ArviZ到兼容版本
无需修改原有代码,直接安装适配旧版PyMC3的ArviZ版本即可,执行命令:pip install arviz==0.11.4 - 方案2:替换收敛性检验逻辑
若需要保留高版本ArviZ的新特性,可以将原有az.geweke()或pm.geweke()的调用替换为官方推荐的收敛性检验方式:- Rhat检验:所有参数Rhat值小于1.01即可判定MCMC链收敛,调用代码为
rhat_vals = az.rhat(trace) - 自相关图检验:调用代码为
az.plot_autocorr(trace),自相关系数快速衰减到0即说明收敛情况良好
- Rhat检验:所有参数Rhat值小于1.01即可判定MCMC链收敛,调用代码为
- 方案3:升级PyMC到最新版本
v4及以上版本的PyMC已经完成了对高版本ArviZ的接口适配,不会触发该报错,升级命令为:pip install pymc --upgrade
注意:新版PyMC与旧版PyMC3的API存在部分差异,升级后需要调整原有代码的对应语法。
内容的提问来源于stack exchange,提问作者user16895493
相关产品推荐
相关产品推荐

