簡體   English   中英

Hashingvectorizer 和多項式朴素貝葉斯不能一起工作

[英]Hashingvectorizer and Multinomial naive bayes are not working together

我正在嘗試在 python 2.7 中編寫一個帶有Scikit-learn的 twitter 情感分析程序。 操作系統是 Linux Ubuntu 14.04。

在矢量化步驟中,我想使用Hashingvectorizer() 為了測試分類器的准確性,它與LinearSVCNuSVCGaussianNBBernoulliNBLogisticRegression分類器一起工作正常,但對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM