Bayesian 具有PyMC3的一般混合模型
我是PyMC3新手,我一直在尝试使用以下代码创建独立泊松的混合:Bayesian 具有PyMC3的一般混合模型,bayesian,pymc3,mixture-model,Bayesian,Pymc3,Mixture Model,我是PyMC3新手,我一直在尝试使用以下代码创建独立泊松的混合: import pymc3 as pm import numpy as np from pymc3.distributions.continuous import Uniform from pymc3.distributions.discrete import Poisson from pymc3.distributions.mixture import Mixture from pymc3 import Deterministic
import pymc3 as pm
import numpy as np
from pymc3.distributions.continuous import Uniform
from pymc3.distributions.discrete import Poisson
from pymc3.distributions.mixture import Mixture
from pymc3 import Deterministic
# Bayesian non-parametric histogram comparison
def bayesian_nphist(bins_1, bins_2):
# n equals m anyway
m = len(bins_1)
n = len(bins_2)
with pm.Model():
beta = Uniform('beta', lower=0, upper=np.mean(np.append(bins_1, bins_2)) * 2, shape=m)
eta = Uniform('eta', lower=0, upper=np.mean(bins_1) * 2, shape=m)
gamma = Uniform('gamma', lower=0, upper=np.mean(bins_2) * 2, shape=n)
pi_1 = Uniform('pi_1', lower=0, upper=1)
pi_2 = Deterministic('pi_2', 1 - pi_1)
m1 = Poisson.dist(mu=beta, shape=[m, 1])
n1 = Poisson.dist(mu=beta, shape=[n, 1])
m2 = Poisson.dist(mu=eta, shape=[m, 1])
n2 = Poisson.dist(mu=gamma, shape=[n, 1])
Mixture('mixture_M', [pi_1, pi_2], [m1, m2], observed=bins_1)
Mixture('mixture_N', [pi_1, pi_2], [n1, n2], observed=bins_2)
start = pm.find_MAP()
step = pm.NUTS(state=start)
trace = pm.sample(5000, step=step, progressbar=True)
pm.traceplot(trace)
基本上,这是一种比较直方图的非参数方法,使用多项式分布是直方图的非参数模型,并且多项式可以建模为一组独立的泊松变量
不知怎的,我设法得到了这个错误:
ValueError:输入维度不匹配。(输入[0]。形状[1]=2,输入[1]。形状[1]=14)
在线:
混合物('Mixel_M',[pi_1,pi_2],[m1,m2],观察值=料仓1)
当使用bins_1和bins_2作为(14,1)整数数组运行时,n=m=14。我打印出了不同变量的形状,我相信它们是匹配的。我是否误解了PYMC3中的混合物是如何工作的?提前谢谢