主持人 EnsembleSampler 对象没有属性 get_chain

emcee EnsembleSampler object has no attribute get_chain

我无法访问主持人使用 get_chain() 方法生成的值。我的代码如下:

import numpy as np
import emcee
def log_prob(x): return -np.sum(x**2)
p0 = np.array(np.random.randn(12, 1))
sampler = emcee.EnsembleSampler(12, 1, log_prob)
sampler.run_mcmc(p0, 1000)
samples = sampler.get_chain()

当我 运行 执行此操作时,我收到消息 AttributeError: 'EnsembleSampler' object has no attribute 'get_chain',我不确定为什么。 我在网上的某个地方读到 get_chain() 方法只是在较新版本的司仪中添加的,需要从 GitHub 下载。如果这是问题所在,我如何从 GitHub 下载它并确保它仍然适用于 Anaconda(我是 Python/GitHub 的新手,我不太熟悉如何完成) ?

如有任何帮助,我们将不胜感激!谢谢!

如您所料,这可能是因为安装了旧版本的司仪。您可以检查安装的版本

emcee.__version__

emcee 3 很长一段时间都只是候选版本(而不是正式版本),因此您阅读了博客 post 中的建议。它已经发布了,但是 post 可能至少有将近一年的历史了。您应该能够更新到最新的司仪并使用 pip

解决您的问题
pip install -U emcee

或使用 conda(看起来像您正在使用的)。

conda install -c conda-forge emcee

conda forge page

上查看有关使用 conda 安装主持人的更多详细信息