Sì, hai quasi ragione. Il parametro pca.explained_variance_ratio_
restituisce un vettore della varianza spiegato da ciascuna dimensione. Pertanto, pca.explained_variance_ratio_[i]
fornisce la varianza spiegata esclusivamente dalla dimensione i + 1st.
Probabilmente si vuole fare pca.explained_variance_ratio_.cumsum()
. Ciò restituirà un vettore x
tale che x[i]
restituisce la varianza cumulativa spiegata dalle prime dimensioni di i + 1.
import numpy as np
from sklearn.decomposition import PCA
np.random.seed(0)
my_matrix = np.random.randn(20, 5)
my_model = PCA(n_components=5)
my_model.fit_transform(my_matrix)
print my_model.explained_variance_
print my_model.explained_variance_ratio_
print my_model.explained_variance_ratio_.cumsum()
[ 1.50756565 1.29374452 0.97042041 0.61712667 0.31529082]
[ 0.32047581 0.27502207 0.20629036 0.13118776 0.067024 ]
[ 0.32047581 0.59549787 0.80178824 0.932976 1. ]
Così i miei dati di giocattoli casuali, se ho preso k=4
vorrei mantenere il 93,3% della varianza.
fonte
2015-09-30 03:32:38
T ti amo tanto! Ottima spiegazione! A volte il manuale di Python è scarsamente documentato/spiegato. Sono totalmente illuminato! – Chubaka
Un'altra domanda: quando eseguiamo PCA (n_components = 1), i comandi di scikit "PCA" eseguono la "matrice di covarianza di calcolo dai dati normalizzati" e "utilizza la decompressione a singolo valore (SVD) per calcolare gli autovettori"? Non vedo dove scegliere altri metodi per calcolare gli autovettori nel modulo PCA scikit Python. – Chubaka
Ottima risposta! questo mi ha davvero aiutato – Mikim