2016-12-06 8 views
0

파이썬에서 가우스 혼합 모델을 1 차원 배열에 맞추려고합니다. 파이썬의 Sklearn 라이브러리에서 "혼합물"을 사용하고 있습니다.가우스 파이썬의 혼합물

내 샘플 배열에는 mean = 70.2 및 variance = 11.8 인 단일 정규 분포에서 437 개의 샘플이 포함되어 있으며 일반 모양을 잃지 않고 노이즈를 추가했습니다.

파이썬 내 배열, 즉 V는 같다 : V = 배열 ​​([87.37658674, 80.46544429, ..., 80.8180536])에 맞춰 다음과 같이 I는 가우스 함수의 혼합물을 사용하고

샘플 세트.

"의

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 개의 예와 하나의 차원이 있습니다.

평균을 맞추면 정확한 값을 얻지 만 분산은 샘플 분산보다 큰 편입니다 (진정한 분산은 약 11.8 인 반면 139.61이됩니다).

내가 뭘 잘못하고 있는지 알 수 있습니까?

+1

'11 .8 '을 분산 대신 표준 편차로 처리하는 것처럼 보입니다. 11.8 제곱은 대략 139.61입니다. –

답변

0

11.8을 표준 편차 또는 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