来自scipy.stats.multivariate_normal的奇怪行为

时间:2014-10-15 15:07:10

标签: python numpy statistics scipy probability

我使用scikit-learn拟合了一个3分量的双变量高斯混合模型并获得了以下均值/协方差

组件1

Mean=[  2.01878147e+03   1.09863146e-01]
Cov=[[  6.56549549e+06   7.10777431e+01]
 [  7.10777431e+01   1.90427621e-02]]

组件2

Mean=[  1.47870577e+04   4.01269332e-01]
Cov=[[  1.36599131e+08   1.64730583e+02]
 [  1.64730583e+02   7.26703249e-02]]

组件3

Mean=[  1.53665912e+04   7.92136639e-02]
Cov=[[  1.76201570e+08   1.90912937e+02]
 [  1.90912937e+02   9.44458941e-03]]

然而,当我绘制每个组件时,它看起来像这样(我稍微重新调整了两个pdf,以便更容易地比较形状):

Gaussian PDFs

该图是沿着这些线创建的

C1 = mixweights[0]*multivariate_normal.pdf(pos,mixmeans[0], mixvars[0])
ax.plot_surface(x, y, C1, cmap=cm.gray, shade='True', rstride=1, cstride=1,alpha=0.5)

然而,对于第3个分量,我们可以看到密度看起来完全错误,实际上密度值在沿着轴的每一行中以小值复制,几乎就像沿着该轴具有无限方差而不是我们可以在协方差矩阵中看到〜0.009方差。我检查了协方差矩阵是可逆的,所以我不知道是什么导致multivariate_norm.pdf返回这样的错误值。有任何想法吗?

0 个答案:

没有答案