2013-03-12 3 views
19

Ich muss Pca verwenden, um die Dimensionen mit der höchsten Varianz eines bestimmten Datensatzes zu identifizieren. Ich benutze sckit-learn's pca, um es zu tun, aber ich kann nicht aus der Ausgabe der pca-Methode identifizieren, was die Komponenten meiner Daten mit der höchsten Varianz sind. Bedenken Sie, dass ich diese Dimensionen nicht eliminieren, sondern nur identifizieren möchte.Ermitteln der Dimension mit der höchsten Varianz mit scikit-learn PCA

Meine Daten sind als Matrix mit 150 Datenzeilen organisiert, jede mit 4 Dimensionen. Ich bin wie folgt vorgehen:

pca = sklearn.decomposition.PCA() 
pca.fit(data_matrix) 

Wenn ich drucken pca.explained_variance_ratio_, es gibt eine Reihe von Abweichungsverhältnisse vom höchsten zum niedrigsten geordnet, aber es hat mir nicht gesagt, welche Dimension der Daten, die sie entsprechen (Ich habe versucht, die Reihenfolge der Spalten in meiner Matrix zu ändern, und das resultierende Varianzverhältnis-Array war dasselbe).

Drucke pca.components_ gibt mir eine 4x4-Matrix (I die ursprüngliche Anzahl von Komponenten als Argument pca links) mit einigen Werten kann ich nicht die Bedeutung verstehen ... nach scikit der Dokumentation, sollten sie sein die Komponenten mit der maximalen Varianz (die Eigenvektoren vielleicht?), aber kein Hinweis darauf, auf welche Dimension sich diese Werte beziehen.

Das Umwandeln der Daten hilft auch nicht, weil die Dimensionen in einer Weise geändert werden, ich kann nicht wirklich wissen, welche sie ursprünglich waren.

Gibt es eine Möglichkeit, wie ich diese Informationen mit scikit's pca bekommen kann? Danke

+1

Die erste Reihe der '' components_'' die Richtung der maximalen Varianz ist, wie die Dokumentation Staaten. Ich bin mir nicht ganz sicher, was daran unklar ist. Die Einträge in '' explained_variance_ratio_'' entsprechen den Zeilen von '' components_''. Wie meinst du "kein Hinweis darauf, auf welche Dimension sich diese Werte beziehen?" –

+2

Nun, mein Problem ist, wenn ich 4 Dimensionen in meinen Daten habe und ich nur die Dimension mit den 2 Dimensionen mit der größten Varianz behalten möchte, woher weiß ich, welche Dimensionen meiner Daten beibehalten worden wären, wenn ich PCA mit verwende n_components = 2. Nehmen wir zum Beispiel an, dass die zweite Dimension und die vierte Dimension meiner Daten die höchste Varianz haben, aber das weiß ich nicht. Ich möchte PCA anwenden und eine Möglichkeit haben, diese Informationen aus den Ergebnissen zu erhalten. Auch hier muss ich die Daten nicht umwandeln! –

Antwort

17

Die pca.explained_variance_ratio_ zurückgegebenen sind die Abweichungen von Hauptkomponenten. Sie können sie verwenden, um zu ermitteln, wie viele Dimensionen (Komponenten) Ihre Daten besser durch pca transformieren könnten. Sie können einen Schwellenwert dafür verwenden (z. B. zählen Sie, wie viele Varianzen unter anderem größer als 0,5 sind). Danach können Sie die Daten mit PCA umwandeln, indem Sie die Anzahl der Dimensionen (Komponenten) verwenden, die den Hauptkomponenten entsprechen, die höher sind als der verwendete Schwellenwert. Die auf diese Dimensionen reduzierten Daten unterscheiden sich von den Daten der Dimensionen in den Originaldaten.

können Sie den Code aus diesem Link:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

+2

Hilft, aber löst nicht mein Problem. Ich muss wissen, welche Dimensionen meiner ursprünglichen Daten eliminiert werden, wenn ich meine Daten mit PCA transformiere und zum Beispiel n_components = 2 wähle. In diesem Fall werden 2 Dimensionen eliminiert, aber zu wissen, welche Dimensionen mein Problem sind. –

+13

PCA eliminiert keine Dimensionen und hält andere von den Originaldaten fern. Es transformiert Ihre Daten in einer Reihe von Dimensionen, deren Daten sich vollständig von den ursprünglichen unterscheiden. – mad

+4

Ja, du hast Recht. Ich habe wieder PCA gelesen, und was ich will, ergibt keinen Sinn wegen dem, was du gesagt hast. Nun, ich akzeptiere deine Antwort! Vielen Dank. –

Verwandte Themen