Ich versuche, ein Testset mit GMM zu klassifizieren. Ich habe einen Trainset (n * 4 Matrix) mit den Bezeichnungen {1,2,3}, n bedeutet die Anzahl der Trainingsbeispiele, die 4 Eigenschaften haben. Und ich habe auch ein Testset (m * 4) zu klassifizieren.Klassifizierung mit GMM mit MATLAB
Mein Ziel ist es, eine Wahrscheinlichkeitsmatrix (m * 3) für jedes Testbeispiel zu haben, die jedes Label P(x_test|labels)
gibt. Genau wie weiche Clusterbildung.
Zuerst erstelle ich einen GMM mit k = 9 Komponenten über den gesamten Zug. Ich weiß in einigen Zeitungen, der Autor erstellt ein GMM für jedes Etikett im Zugverband. Aber ich möchte mit den Daten aus allen Klassen umgehen.
GMModel = fitgmdist(trainset,k_component,'RegularizationValue',0.1,'Start','plus');
Mein Problem ist, möchte ich die Beziehung P(component|labels)
zwischen den Komponenten und Etiketten bestätigen. Also schreibe ich einen Code wie unten, aber nicht sicher, ob es richtig ist,
idx_ex_of_c1 = find(trainset_label==1);
idx_ex_of_c2 = find(trainset_label==2);
idx_ex_of_c3 = find(trainset_label==3);
[~,~,post] = cluster(GMModel,trainset);
cita_c_k = zeros(3,k_component);
for id_k = 1:k_component
cita_c_k(1,id_k) = sum(post(idx_ex_of_c1,id_k))/numel(idx_ex_of_c1);
cita_c_k(2,id_k) = sum(post(idx_ex_of_c2,id_k))/numel(idx_ex_of_c2);
cita_c_k(3,id_k) = sum(post(idx_ex_of_c3,id_k))/numel(idx_ex_of_c3);
end
cita_c_k
ist eine (3 * 9) Matrix, die die Beziehungen zu speichern. idx_ex_of_c1
ist der Index von Beispielen, deren Bezeichnung "1" im Zugverband lautet.
Für den Testprozess. Ich wende zuerst die GMModel
[P,~] = posterior(GMModel,testset); % P is a m*9 matrix
Und dann Summe aller Komponenten Testset,
P_testset = P*cita_c_k';
[a,b] = max(P_testset,3);
imagesc(b);
Das Ergebnis ist in Ordnung, aber nicht gut genug. Kann mir jemand ein paar Tipps geben?
Danke!
warum haben Sie sich 9 Kompo zu trainieren nents für Ihren GMM? Mehr ist nicht unbedingt besser, tatsächlich habe ich extrem komplexe Trainingssets mit nur 5-7 Komponenten gesehen. – GameOfThrows
Ich bin mir nicht sicher, wie viele Komponenten am besten funktionieren. Vielleicht hast du recht. Ich werde die optimalen # Komponenten herausfinden. –