4

我正在尝试在 python 中实现高斯混合模型的期望最大化算法。

给定高斯分布的平均mu和协方差sigma ,我有以下行来计算我的数据X的高斯概率p

for i in range(len(X[0])):  
   p[i] = scipy.stats.multivariate_normal.pdf(X[:,i],mu,sigma)

我想知道我是否可以以某种方式摆脱 for 循环以获得类似的东西

p[:] = scipy.stats.multivariate_normal.pdf(X[:,:]??)

我对广播进行了一些研究,并正在考虑使用该numpy.einsum功能,但无法弄清楚在这种情况下它将如何工作。

4

1 回答 1

0

展平,使用pdf呼叫并重新塑造 -

from scipy import stats

out = stats.multivariate_normal.pdf(X.ravel(),mu,sigma).reshape(-1,len(X[0])).T
于 2017-02-06T22:03:04.517 回答