高斯蟒蛇的混合物



我试图将高斯混合模型拟合到python中的一个维数阵列。我正在使用Python的Sklearn库中的"混合物"。

我的样品阵列包括来自单个正态分布的437个样本,平均值= 70.2且方差= 11.8,我在其中添加了一些噪音,而不会失去正常形状。

在Python中,我的数组,即V,就像:V =阵列([[87.37658674,80.46544429,....,80.8180536])

我使用的是高斯函数的混合物,以适合样品集。

g =混合物。gaussianMixture(n_components = 1)G.Fit(np.Array(np.split(v,v.shape [0])))

供您参考," np.array(np.split(v,v.shape [0]))的形状是:(437,1)

意味着我有437个示例和一个维度。

拟合平均值后,获得正确的值,但差异大于样本差异(它得到139.61,而真方差应约为11.8)。

有人知道我在做什么错吗?

我怀疑您将11.8用作标准偏差或Sigma。因此,相应的方差为Sigma*Sigma或11.8*11.8,大约是您所获得的139.61

请参阅下面的代码。

import os
import numpy as np
import math
from sklearn import mixture

def main():
    np.random.seed(42)
    sigma=11.8
    mu=70.2
    obs1 = np.random.randn(437, 1) * sigma  + mu
    g = mixture.GMM(n_components=1)
    g_gmm = g.fit(obs1)
    print "%r" % g_gmm
    print "%r" % g.weights_
    print "%r" % g.means_
    print "%r" % g.covars_
    pass

最新更新