2015-01-31 2 views
0

데이터 분류를 위해 GML을 사용하고 있습니다.Gaussian Mixture Models (GMM)으로 분류하는 방법

문제는이 질문에 대한 비슷한입니다 : probability with Guassian mixture Model

I가 다음과 같은 데이터 세트 :

trainData1; % dataset for class 1 
trainData2; % dataset for class 2 
testData; % test dataset 

GMM 모델 구하는 방법

GMM_class1=gmdistribution.fit(trainData1,12,'CovType','diagonal'); 
GMM_class2=gmdistribution.fit(trainData2,12,'CovType','diagonal'); 

가에 대한 로그-likeihood를 얻으려면 각 클래스의 테스트 데이터 세트 :

[posteriorTest_Train1,nlogL_1]=posterior(GMM_class1,testData); 
[posteriorTest_Train2,nlogL_2]=posterior(GMM_class2,testData); 

내가이 일을 해요, 분류 :

if nlogL_1 < nlogL_2 
    % testData belongs to class 1 
else 
    % testData belongs to class 2 
end 

가, 내가 바로 그 일을하고있어 알고 싶습니다하십시오.

감사합니다.

답변

0

이것은 내가 이해하는 gmm이 아닙니다. 항목이 클래스 1 또는 클래스 2, 에 속하는지 분류하려면 다음을 수행하십시오.

GMM_class = gmdistribution.fit(trainData,2,'CovType','diagonal'); 
posteriorTest = posterior(GMM_class,testData); 

그런 다음 테스트 데이터

+0

2. 귀하의 답변에 감사드립니다 클래스 1 또는 클래스에 속하는지 문이 판단하는 경우에 당신은을 수행 할 수 있지만 그 차이를 이해하지 못했다. GMM_class1과 GMM_class2를 사용할 때 각 클래스의 모델을 얻으 려합니다. 맞지 않아? 당신의 대답을 고려해 볼 때, 모든 train dataset (trainData1과 trainData2)을 단 하나의 set (trainData)에 가지고 있다고 가정합니다. 따라서 if 문을 이런 식으로 어떻게 수행 할 수 있습니까? – VJDVieira

+0

후부에는 두 개의 값이 있어야합니다. 하나는 클래스 1을위한 것이고 다른 하나는 클래스 2를위한 것입니다. 당신은 레이블로서 큰 것을 선택합니다. –

+0

gmdistribution.fit 함수는 gmdistribution.fit (X, k)입니다. 여기서 X는 데이터 세트이고 k는 클래스 수입니다. 그러나, 내 이해에서, k는 하나의 클래스를 모델링하는데 사용 된 컴포넌트 (가우스)의 수입니다. – VJDVieira

관련 문제