2017-09-28 5 views
1

J'ai besoin de trouver des caractéristiques avec une corrélation maximale avec 2 composantes principales. C'est une tâche de formation et le résultat est faux (les 4 composantes ont plus de corrélation avec 1 composant)python Méthode PCA

from sklearn import datasets 

iris = datasets.load_iris() 
data = iris.data 
target = iris.target 
target_names = iris.target_names 
means, = np.mean(data, axis=0), 
X = (data - means) 

from sklearn.decomposition import PCA 
model = PCA(n_components=2) 
model.fit(X) 
proect_data = model.transform(X) 
proect_data_abs = np.absolute(proect_data) 
means, = np.mean(proect_data_abs, axis=0), 
Y = (proect_data_abs - means) 
corr_array = np.corrcoef(X.T, Y.T) 

Répondre

2

Vous ne fournissez pas de justification pourquoi vous prenez la valeur absolue de vos données transformées, et il est très pas clair pourquoi vous le faites.

Si cette partie est supprimée, ce qui rend la soustraction de la moyenne à nouveau nécessaire, vous obtenez des résultats attendus, et il est facile de lire sur quelles fonctionnalités ont la plus forte corrélation avec les composants principaux:

Y = proect_data 
corr_array = np.corrcoef(X.T, Y.T) 
corr_array[4:,:4] 

array([[ 0.89754488, -0.38999338, 0.99785405, 0.96648418], 
     [ 0.39023141, 0.82831259, -0.04903006, -0.04818017]]) 
+0

Grand. Je vous remercie. Cela fonctionne –

+0

S'il vous plaît upvote et marquer la réponse comme acceptée si elle vous a aidé :) – Atnas