我试图在python2.7中用Scikit-learn编写一个twitter情感分析程序。操作系统是LinuxUbuntu14.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)为什么会发生这种情况,我该如何解决呢?
发布于 2016-10-17 11:30:47
初始化矢量器时,需要将non_negative参数设置为True
vectorizer = HashingVectorizer(non_negative=True)发布于 2020-04-19 18:14:27
如果non_negative参数不可用(就像我的版本)
试试看:vectorizer = HashingVectorizer(alternate_sign=False)
https://stackoverflow.com/questions/36456518
复制相似问题