2013-03-12 12 views
19

Devo usare pca per identificare le dimensioni con la varianza più alta di un certo insieme di dati. Sto usando il pca di scikit-learn per farlo, ma non riesco a identificare dall'output del metodo pca quali sono i componenti dei miei dati con la varianza più alta. Tieni presente che non voglio eliminare quelle dimensioni, ma solo identificarle.Trovare la dimensione con la varianza più alta utilizzando scikit-learn PCA

I miei dati sono organizzati come una matrice con 150 righe di dati, ciascuna con 4 dimensioni. Sto facendo come segue:

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

Quando stampo pca.explained_variance_ratio_, si emette un array di rapporti di varianza ordinati dal più alto al più basso, ma non mi dice quale dimensione dai dati corrispondono a (Ho provato a cambiare l'ordine delle colonne sulla mia matrice, e l'array risultante del rapporto di varianza era lo stesso).

Stampa pca.components_ mi dà una matrice 4x4 (ho lasciato il numero originale di componenti come argomento per APC) con alcuni valori non riesco a capire il significato di ... secondo la documentazione di scikit, dovrebbero essere i componenti con la varianza massima (forse gli autovettori?), ma nessun segno di quale dimensione si riferiscono a quei valori.

Anche la trasformazione dei dati non è di aiuto, perché le dimensioni sono state modificate in un modo in cui non sono in grado di sapere quale erano in origine.

C'è un modo per ottenere queste informazioni con il pca di scikit? Grazie

+1

La prima fila di '' components_'' è la direzione di massima varianza, come gli stati di documentazione. Non sono del tutto sicuro di cosa non sia chiaro al riguardo. Le voci in '' illustrated_variance_ratio_'' corrispondono alle righe di '' components_''. Come intendi "nessun segno di quale dimensione si riferiscono a quei valori"? –

+2

Beh, il mio problema è che, considerando che ho 4 dimensioni nei miei dati e voglio mantenere solo la dimensione con le 2 dimensioni con la varianza più alta, come faccio a sapere quali dimensioni dei miei dati sarebbero state mantenute se applico PCA con n_components = 2. Ad esempio, supponiamo che la seconda dimensione e la quarta dimensione dei miei dati abbiano la varianza più alta, ma non lo so. Voglio applicare PCA e avere un modo per ottenere queste informazioni dai risultati. Ancora una volta, non ho bisogno di trasformare i dati! –

risposta

17

Il pca.explained_variance_ratio_ restituito sono le varianze dai componenti principali. Puoi usarli per scoprire quante dimensioni (componenti) i tuoi dati potrebbero essere meglio trasformati da pca. È possibile utilizzare una soglia per tale valore (ad esempio, si calcola quante variazioni sono maggiori di 0,5, tra le altre). Successivamente, è possibile trasformare i dati per PCA utilizzando il numero di dimensioni (componenti) che sono uguali alle componenti principali superiori alla soglia utilizzata. I dati ridotti a queste dimensioni sono diversi dai dati sulle dimensioni nei dati originali.

è possibile controllare il codice da questo link:

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

+2

Aiuta, ma non risolve il mio problema. Ho bisogno di sapere quali dimensioni dei miei dati originali saranno eliminate quando trasformo i miei dati con PCA e scelgo per esempio n_components = 2. In questo caso, verranno eliminate 2 dimensioni, ma conoscendo quali dimensioni è il mio problema. –

+13

PCA non elimina le dimensioni e ne mantiene altre dai dati originali. Trasforma i tuoi dati in un numero di dimensioni i cui dati sono completamente diversi da quelli originali. – mad

+4

Sì, hai ragione. Ho letto di nuovo PCA e quello che voglio non ha senso per quello che hai detto. Bene, sto accettando la tua risposta! Grazie. –

Problemi correlati