2016-04-06 7 views
0

Ich versuche, ein Twitter-Sentiment-Analyse-Programm mit Scikit-learn in Python 2.7 zu schreiben. OS ist Linux Ubuntu 14.04.Hashingvectorizer und Multinomial naive Bayes arbeiten nicht zusammen

Im Vektorisierungsschritt möchte ich Hashingvectorizer() verwenden. die Klassifizierer Genauigkeit zu testen es mit LinearSVC, NuSVC, GaussianNB, BernoulliNB und LogisticRegression Klassifizierer gut funktioniert, aber für MultinomialNB, gibt es diesen Fehler

Traceback (most recent call last): 
    File "/media/test.py", line 310, in <module> 
    classifier_rbf.fit(train_vectors, y_trainTweets) 
    File "/home/.local/lib/python2.7/site-packages/sklearn/naive_bayes.py", line 552, in fit 
    self._count(X, Y) 
    File "/home/.local/lib/python2.7/site-packages/sklearn/naive_bayes.py", line 655, in _count 
    raise ValueError("Input X must be non-negative") 
ValueError: Input X must be non-negative 
[Finished in 16.4s with exit code 1] 

Hier ist der Block-Code zu diesem Fehler

vectorizer = HashingVectorizer() 
train_vectors = vectorizer.fit_transform(x_trainTweets) 
test_vectors = vectorizer.transform(x_testTweets) 

classifier_rbf = MultinomialNB() 
classifier_rbf.fit(train_vectors, y_trainTweets) 
prediction_rbf = classifier_rbf.predict(test_vectors) 

Warum passiert das und wie kann ich es lösen?

Antwort

1

Sie müssen non_negative Argument True, setzen, wenn Ihr vectorizer Initialisierung

vectorizer = HashingVectorizer(non_negative=True) 
+1

in sklearn 0.19+ sollte 'HashingVectorizer (alternate_sign = False) sein‘ –

Verwandte Themen