J'essaie d'adapter la PCA sur les données de train et de test.
ValueError: operands could not be broadcast together with shapes (395,219) (30,)
3 Réponses :
Ce n'est pas vraiment une réponse. Mais pour vous aider à comprendre le scénario, je pose cela!
import numpy as np from sklearn.decomposition import PCA X = np.random.randn(2735, 219) pca = PCA(n_components=30) pca.fit(X) test_values = np.random.randn(395 , 219) pca.transform(test_values)
J'ai essayé de reproduire votre exemple, et tout fonctionne bien: Les sorties de code: p> Vérifiez que l'erreur apparaît. sur la ligne avec PCA. On dirait que vous faites une certaine opération avec les matrices de forme erronée. P> p>
C'est parce que la ligne x_train = pca.fit_transform (x_train). Il a écrasé ses données d'entraînement originales avec les valeurs de transformation et a recyclé la PCA.
Mon pari est qu'il s'agit d'un problème de variable préservé si vous utilisez ipython, ordinateur portable ou quelque chose comme ça. Si ce n'est pas le cas, vous pouvez ignorer cette réponse. P>
Considérez les cellules suivantes. P>
Quand j'exécute ces cellules, tout va bien. Cependant, si j'essaie d'exécuter une deuxième cellule à nouveau, j'ai reçu cette erreur: p>
C'est parce que X_TRAIN est maintenant un Si vous effacez vos variables ou réorganisez votre code de telle sorte qu'il ne correspond pas aux données déjà transformées, le problème peut être résolu. P> ValueError: Les opérandes n'ont pas pu être diffusés avec des formes (395.219) (30,) Code> P>
2735, 30 Code> Matrix et PCA est monté sur cette matrice afin qu'il s'attend à
N, 30 Code> Matrix. P>
C'est exactement ce qui se passait!
Utilisez-vous Ipython, Jupyter Notebook ou quelque chose qui préserve l'état de la variable?
Vous écrasez vos données d'entraînement d'origine avec des valeurs transformées. C'est loin de la bonne pratique. Istead fait quelque chose comme
x_trans = pca.fit_transfor (x_train) code>.
De cette façon, vous contournerez le problème que vous avez posté ici.