我在使用 get_chain(( 方法访问从 emcee 生成的值时遇到问题。我的代码如下:
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((方法只是在较新版本的emcee中添加的,并且需要从GitHub下载。如果这是问题所在,我将如何从GitHub下载它并确保它仍然可以与Anaconda一起使用(我是Python/GitHub的新手,我不太熟悉如何做到这一点(?
任何帮助将不胜感激!谢谢!
正如您所怀疑的,这可能是由于安装了旧版本的 emcee。您可以检查安装的版本
emcee.__version__
emcee
3 在很长一段时间内只是一个候选版本(而不是官方版本(,因此您阅读的博客文章中的建议。然而,它已经发布,这篇文章可能至少有将近一年的历史了。您应该能够更新到最新的司仪并使用pip
修复您的问题
pip install -U emcee
或带有conda
(看起来像您正在使用的(。
conda install -c conda-forge emcee
有关使用 Conda 安装的 Emcee 的更多详细信息,请访问其 Conda Forge 页面