MATLAB을 사용하여 가우스 혼합 모델을 사용하여 두 개의 클래스를 분류하고자합니다.MATLAB을 사용하여 GMM으로 분류
나는 기능 두 가지 모델을 만들어 훈련을하고 그런 다음
NComponents = 1;
for class=1:2
model(class).obj = gmdistribution.fit(trainData(class).feature,NComponents,'Regularize',.1);
end
을 gmdistribution.fit, 주어진 테스트 데이터 포인트는, 내가 그들을 분류하는 방법을 알고 싶어요. 내가 지금 뭐하는 거지 각 모델의 각 포인트에 대한 사후 확률을 얻을 수 있습니다 :
vectorClasses = zeros(1,2);
for class=1:2
Pos= posterior(model(class).obj,testDataPoint);
suma=0;
for k=1:NComponents
suma = suma + Pos(1,k)*model(class).obj.PComponents(k);
end
vectorClasses(class)=suma;
end
[v ix] = sort(vectorClasses,'descend');
if ix(1)==realClass
success= 1;
else
success= 0;
end
나는 각 구성 요소의 사후 확률과 모델의 구성 요소의 확률의 곱셈을 요약. 그런 다음 각 모델에서 얻은 확률을 정렬합니다. 테스트 데이터 포인트가 가장 높은 확률을 가진 클래스에 해당한다고 말합니다.
나는 괜찮은가요? 올바른 방법은 무엇입니까? 그것을 할 수있는 가장 쉬운 방법이 있습니까?
안녕하세요, 전에 비슷한 질문에 직면, http://stackoverflow.com/questions/24037988/how-to-calculate-the-probability-with-a-gaussian-mixture-model-in-matlab?noredirect= 1 # comment37492776_24037988, @dpwe가 맞다고 생각합니다. 기본적으로, 나는 [Dummy, nlogl] = posterior (model (class) .obj, testDataPoint)''nlogl'을 일반적인 클래스의 후부로 사용한다. 희망이 당신을 도울 수 있습니다. 또한 Matlab에서 후방 기능을 열어 디버그 모드로 해당 기능의 출력 의미를 알 수 있습니다. – sflee