我试图将高斯混合模型拟合到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