簡體   English   中英

我如何通過消除錯誤來訓練管道中的GaussianNB [AttributeError:'numpy.ndarray'對象沒有屬性'lower']

[英]How can i train GaussianNB in pipeline by removing error[AttributeError: 'numpy.ndarray' object has no attribute 'lower']

這是我使用計數矢量化器和tfidftransformer以及也使用GaussianNB的數據,但是我在此代碼中遇到錯誤。 請讓我知道正確的語法。

train = [('I love this sandwich.','pos'),
     ('This is an amazing place!', 'pos'),
     ('I feel very good about these beers.', 'pos'),
     ('This is my best work.', 'pos'),
     ('What an awesome view', 'pos'),
     ('I do not like this restaurant', 'neg'),
     ('I am tired of this stuff.', 'neg'),
     ("I can't deal with this.", 'neg'),
     ('He is my sworn enemy!.', 'neg'),
     ('My boss is horrible.', 'neg')
    ]
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()

text_train_cv = cv.fit_transform(list(zip(*train))[0])
print(text_train_cv.toarray())

from sklearn.feature_extraction.text import TfidfTransformer
tfidf_trans = TfidfTransformer()

text_train_tfidf = tfidf_trans.fit_transform(text_train_cv)
print(text_train_tfidf.toarray())

from sklearn.naive_bayes import GaussianNB
clf = GaussianNB().fit(text_train_tfidf.toarray(), list(zip(*train))[1])

text_clf = Pipeline([('vect',CountVectorizer(stop_words='english')), 
('tfidf',TfidfTransformer()),('clf',GaussianNB(priors=None))])
text_clf = text_clf.fit(text_train_tfidf.toarray() , list(zip(*train))[1])
print(text_clf)

它給我錯誤:AttributeError:'numpy.ndarray'對象沒有屬性'lower'

clf = GaussianNB().fit(text_train_tfidf.toarray() , list(zip(*train))[1])

GaussianNB不支持將稀疏矩陣作為X的輸入,但默認情況下,TfidfTransformer將返回稀疏矩陣。 因此,錯誤。

toarray()會將其轉換為密集型。 但是請注意,這將導致內存使用量的大幅增加。

更新:

使用管道時,需要提供傳遞給管道中的轉換器的數據。 在這種情況下,它就是list(zip(*train))[0]

text_clf = text_clf.fit(list(zip(*train))[0] , list(zip(*train))[1])

那將解決您的第一個錯誤。 但是由於稀疏矩陣,您仍然會收到錯誤消息。 請參閱此答案以解決以下問題: -https : //stackoverflow.com/a/28384887/3374996

MultinomialNB通常用於文本分類任務,它確實支持稀疏矩陣作為輸入數據集。

PS將密集矩陣用於更大的語料庫,您可能最終會遇到MemoryError

所以試試這個:

from sklearn.naive_bayes import MultinomialNB

clf = MultinomialNB().fit(text_train_tfidf , list(zip(*train))[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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