【发布时间】:2014-01-02 16:19:44
【问题描述】:
我正在尝试将How to model a mixture of 3 Normals in PyMC? 中定义的高斯混合模型移植到 pymc3
代码
import numpy as np
from pymc import Model, Gamma, Normal, Dirichlet
from pymc import Multinomial
from pymc import sample, Metropolis
k = 3
ndata = 500
v = np.random.randint(0, k, ndata)
data = ((v == 0)*(50 + np.random.randn(ndata))
+ (v == 1)*(-50 + np.random.randn(ndata))
+ (v == 2)*np.random.randn(ndata))
model = Model()
with model:
dd = Dirichlet('dd', k=k, a=1, shape=k)
precs = Gamma('precs', alpha=0.1, beta=0.1, shape=k)
means = Normal('means', 0, 0.001, shape=k)
category = Multinomial('category',
n=1,
p=dd,
shape=ndata)
points = Normal('obs',
means[category],
precs[category],
observed=data)
tr = sample(3000, step=Metropolis())
我收到以下代码错误:
AttributeError: <pymc.quickclass.Multinomial object at 0x4804210> has no default value to use, checked for: ['mode'] pass testval argument or provide one of these.
我做错了什么?
【问题讨论】:
标签: python machine-learning statistics bayesian pymc