[英]Hashingvectorizer and Multinomial naive bayes are not working together
我正在嘗試在 python 2.7 中編寫一個帶有Scikit-learn
的 twitter 情感分析程序。 操作系統是 Linux Ubuntu 14.04。
在矢量化步驟中,我想使用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)
為什么會發生,我該如何解決?
如果non_negative
參數不可用(就像我的版本一樣)
嘗試放置: vectorizer = HashingVectorizer(alternate_sign=False)
初始化矢量化器時,您需要將non_negative
參數設置為True
vectorizer = HashingVectorizer(non_negative=True)
non_negative 參數已替換為 alternate_sign。 因此,如果您想要non_negative=True
,請嘗試放置alternate_sign=False
。它肯定會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.