2013-03-12 14 views
19

Potrzebuję użyć pca, aby zidentyfikować wymiary o największej wariancji określonego zestawu danych. Używam pca scikit-learning, aby to zrobić, ale nie mogę zidentyfikować na podstawie wyniku metody pca jakie składniki moich danych mają największą wariancję. Pamiętaj, że nie chcę eliminować tych wymiarów, tylko je identyfikować.Znajdowanie wymiaru o największej wariancji za pomocą scikit-learn PCA

Moje dane są uporządkowane w postaci macierzy zawierającej 150 wierszy danych, z których każdy ma 4 wymiary. Robię się następująco:

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

Kiedy drukować pca.explained_variance_ratio_, wyprowadza tablicę wskaźników wariancji zamówionych od najwyższego do najniższego, ale nie powiedzieć, które z danych wymiar odpowiadają one (Próbowałem zmienić kolejność kolumn na mojej macierzy, a wynikowa tablica współczynników wariancji była taka sama).

Drukowanie pca.components_ daje mi macierz 4x4 (zostawiłem oryginalną liczbę komponentów jako argument do PCA) z pewnymi wartościami nie mogę zrozumieć sens ... zgodnie z dokumentacją scikit za, powinny one być komponenty o maksymalnej wariancji (wektory własne być może?), ale bez znaku, do którego wymiaru odnoszą się te wartości.

Przekształcanie danych również nie pomaga, ponieważ wymiary są zmieniane w taki sposób, że nie wiem, który był pierwotnie.

Czy mogę uzyskać te informacje za pomocą pci scikita? Dzięki

+1

Pierwszy wiersz 'components_'' jest kierunek maksymalnej wariancji, jak mówi dokumentacji. Nie jestem do końca pewien, co jest niejasne. Wpisy w 'explain_variance_ratio_'' odpowiadają wierszom' 'components_''. Jak rozumiesz" brak oznak, do którego wymiaru odnoszą się te wartości "? –

+2

Cóż, mój problem polega na tym, że mam 4 wymiary w moich danych i chcę zachować tylko wymiar z 2 wymiarami o największej wariancji, skąd mam wiedzieć, które wymiary moich danych zostałyby zachowane, jeśli zastosuję PCA z n_components = 2. Załóżmy na przykład, że drugi wymiar i czwarty wymiar moich danych ma największą wariancję, ale ja tego nie wiem. Chcę zastosować PCA i mieć jakiś sposób, aby uzyskać te informacje z wyników. Ponownie, nie muszę przekształcać danych! –

Odpowiedz

17

Zwrócone wartości pca.explained_variance_ratio_ są odchyleniami od głównych komponentów. Możesz ich użyć, aby sprawdzić, ile wymiarów (komponentów) może być lepiej przetworzonych przez dane o firmie. Możesz użyć do tego progu (np. Zliczać, ile wariancji jest więcej niż 0,5, między innymi). Następnie można przekształcić dane według PCA, używając liczby wymiarów (komponentów), które są równe składnikom głównym wyższym niż zastosowany próg. Dane zredukowane do tych wymiarów różnią się od danych dotyczących wymiarów w oryginalnych danych.

można sprawdzić kod z tego linku:

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

+2

Pomaga, ale nie rozwiązuje mojego problemu. Muszę wiedzieć, które wymiary moich oryginalnych danych zostaną usunięte podczas przekształcania moich danych za pomocą PCA i wybrać na przykład n_components = 2. W tym przypadku dwa wymiary zostaną wyeliminowane, ale wiedząc, które wymiary są moim problemem. –

+13

PCA nie eliminuje wymiarów i utrzymuje innych z oryginalnych danych. Przekształca dane w wielu wymiarach, których dane są zupełnie inne niż oryginalne. – mad

+4

Tak, masz rację. Czytałem ponownie PCA, a to, co chcę, nie ma sensu z powodu tego, co powiedziałeś. Cóż, akceptuję twoją odpowiedź! Dzięki. –

Powiązane problemy