2017-12-22 9 views
1

Ich versuche PCA zu verwenden, um meine Implementierung von k-Means-Algorithmus zu visualisieren. Ich befolge das Tutorial zu Hauptkomponentenkoeffizienten, Scores und Abweichungen in this link.Projizieren neuer Punkte auf PCA zweiten Grades MATLAB

Ich verwende den folgenden Befehl: [coeff,score,~]=pca(X'); wo X meine Daten ist.

Meine Daten sind eine 30 x 455-Matrix, das sind 30 Funktionen mit 455 Samples. Ich habe erfolgreich den Score-Parameter verwendet, um ein 2D-Diagramm für Visualisierungszwecke zu erstellen. Jetzt möchte ich das 30-dimensionale Zentrum auf diese Ebene projizieren. Ich habe versucht coeff*centers(:,1), aber ich verstehe nicht, wenn dies die richtige Verwendung ist.

Wie projiziere ich einen neuen 30-dimensionalen Punkt auf die 2D der ersten vs der zweiten PCA-Komponente?

Antwort

2

Ich nehme an, dass durch centers(:, 1) Sie eine neue Beobachtung bezeichnen. Um auszudrücken, diese Beobachtung in den Hauptkomponenten sollten Sie

[coeff, score, ~, ~, ~, mu]=pca(X'); %return the estimated mean "mu" 
tmp = centers(:, 1) - mu'; %remove mean since pca() by default centers data 
coeff' * tmp; % the new observation expressed in the principal components 

Hinweis schreiben, die Sie haben, um den Mittelwert zu subtrahieren da pca() von Standardzentren die Daten. Beachten Sie auch die Transponierte ' auf Koeff. Eigentlich sollte es inv(coeff) sein, aber da coeff ein orthogonal matrix ist, können wir transpose stattdessen verwenden.

+0

Die 'center (:, 1)' bezeichnet ein k-means Zentrum des Clusters. Ich möchte in 2D visualisieren, wo dieses Zentrum ist. – havakok

+0

Wenn ich die Daten normalisiert und zentriert habe, bevor ich den pca benutze, muss ich noch den Mittelwert vom neuen Punkt subtrahieren? – havakok

+0

Sie müssen 'mu' nicht subtrahieren, wenn die Daten bereits zentriert sind. Sie können überprüfen, dass die Daten zentriert sind, indem Sie überprüfen, dass "mu" gleich Null ist. 'mu' ist genau dasselbe wie' mean (X ') '. – tuntap

Verwandte Themen