2017-08-19 7 views
1

Je suis nouveau dans le monde de ML et sklearn. J'ai essayé d'utiliser GaussianNB sur un ensemble de données avec X_train[2500,800], Y_train[2500,8].sklearn (Bad Input Shape) ValueError

from sklearn.naive_bayes import GaussianNB 
clf = GaussianNB() 
clf.fit(X, Y) 

sur l'exécution du programme, il montre

ValueError: bad input shape (2500, 8).

Comment puis-je convertir Y_train[2500,8] à Y_train[2500,1]?

+0

Quelles sont vos données? avez-vous des échantillons '2500' avec des caractéristiques' 800'? –

+0

Oui. 2500 échantillons. Et y a 8 étiquettes. Mais le classificateur n'accepte qu'une seule colonne –

+0

'Y_train' devrait être une liste de valeurs cibles, c'est-à-dire une liste dans laquelle l'élément ith est l'étiquette de classe du cas d'apprentissage ith dans votre ensemble de données. Il doit donc être unidimensionnel. Par conséquent, si votre 'Y_train' est de forme (2500, 8), vous avez peut-être mélangé quelque chose. – MaxPowers

Répondre

1

OP utilise un encodeur chaud pour la fonction d'ajustement ne fonctionnera pas avec le tableau @Ishant Mrinal recommande ce

Y_train = np.argmax(Y_train, axis=1) 

qui vous permettra de passer l'un encodage à chaud dans la fonction d'ajustement.