我在Ubuntu 12.04上使用anaconda python当我尝试执行以下python代码时
import pymc as pm
import numpy as np
trace = None
with pm.Model() as model:
alpha = pm.Normal('alpha', mu=0, sd=20)
beta = pm.Normal('beta', mu=0, sd=20)
sigma = pm.Uniform('sigma', lower=0, upper=20)
y_est = alpha + beta * x
likelihood = pm.Normal('y', mu=y_est, sd=sigma, observed=y)
start = pm.find_MAP()
step = pm.NUTS(state=start)
trace = pm.sample(2000, step, start=start, progressbar=False)
pm.traceplot(trace);
我收到以下错误
AttributeError Traceback (most recent call last)
<ipython-input-7-0d27d14303ac> in <module>()
3
4 trace = None
----> 5 with pm.Model() as model:
6 alpha = pm.Normal('alpha', mu=0, sd=20)
7 beta = pm.Normal('beta', mu=0, sd=20)
AttributeError: __exit__
我该如何解决? 这有什么问题?
答案 0 :(得分:1)
pm.Model()
不是上下文管理器;它没有实现必要的方法。您可能正在运行尚未添加该功能的pymc
版本。
只需将其分配给变量并直接使用,在之后创建元素:
alpha = pm.Normal('alpha', mu=0, sd=20)
beta = pm.Normal('beta', mu=0, sd=20)
sigma = pm.Uniform('sigma', lower=0, upper=20)
# etc.
model = pm.Model([alpha, beta, sigma, ...])
model fitting tutorial使用函数生成输入。