高斯Python的混合物

时间:2016-12-06 17:51:37

标签: scikit-learn gaussian data-fitting mixture-model

我试图将高斯混合模型拟合到python中的一维数组。我在Python中使用Sklearn库中的“混合物”。

我的样本数组包含来自单个正态分布的437个样本,均值= 70.2,方差= 11.8并且我在不丢失正常形状的情况下添加了一些噪声。

在Python中

我的数组,即v,就像: v =数组([87.37658674,80.46544429,....,80.8180536])

我使用高斯函数的混合如下来拟合样本集。

G = mixture.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左右)。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我怀疑您使用11.8作为标准偏差或西格玛。所以相应的方差是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