2016-04-06 3 views
0

Я пытаюсь написать программу анализа настроений twitter с помощью Scikit-learn в python 2.7. ОС - Linux Ubuntu 14.04.Hashingvectorizer и многоминимальные байки не работают вместе

В процессе векторизации, я хочу использовать Hashingvectorizer(). Для проверки точности классификатора он прекрасно работает с LinearSVC, NuSVC, GaussianNB, BernoulliNB и LogisticRegression классификаторами, но MultinomialNB, он возвращает эту ошибку

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] 

Вот блок код, связанный с этой ошибкой

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) 

Почему это происходит и как я могу его решить?

ответ

1

Вам нужно установить non_negative аргумент True, при инициализации вашего векторизатор

vectorizer = HashingVectorizer(non_negative=True) 
+1

в sklearn 0.19+ должно быть 'HashingVectorizer (alternate_sign = False)» –

Смежные вопросы