gpt4 book ai didi

python - 用一些不在训练集中的词预测分类(朴素贝叶斯)

转载 作者:行者123 更新时间:2023-11-28 22:44:19 25 4
gpt4 key购买 nike

我创建了一个朴素贝叶斯模型来预测结果是“负面”还是“正面”。我遇到的问题是在一组新数据上运行模型,其中一些词不在模型中。我收到的预测新数据集的错误是:

ValueError:预期输入具有 6 个特征,但得到的是 4 个

我读到我必须在我的模型中放置拉普拉斯平滑器,而 Bernoulli() 的默认 alpha 已经是 1。我还能做些什么来修复我的错误?谢谢

from nltk.corpus import stopwords
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import BernoulliNB
from sklearn import cross_validation
from sklearn.metrics import classification_report
import numpy as np
from sklearn.metrics import accuracy_score
import textblob as TextBlob



#scikit
comments = list(['happy','sad','this is negative','this is positive', 'i like this', 'why do i hate this'])
classes = list(['positive','negative','negative','positive','positive','negative'])


# preprocess creates the term frequency matrix for the review data set
stop = stopwords.words('english')
count_vectorizer = CountVectorizer(analyzer =u'word',stop_words = stop, ngram_range=(1, 3))
comments = count_vectorizer.fit_transform(comments)
tfidf_comments = TfidfTransformer(use_idf=True).fit_transform(comments)


# preparing data for split validation. 60% training, 40% test
data_train,data_test,target_train,target_test = cross_validation.train_test_split(tfidf_comments,classes,test_size=0.2,random_state=43)
classifier = BernoulliNB().fit(data_train,target_train)

#new data
comments_new = list(['positive','zebra','george','nothing'])
comments_new = count_vectorizer.fit_transform(comments_new)
tfidf_comments_new = TfidfTransformer(use_idf=True).fit_transform(comments_new)

classifier.predict(tfidf_comments_new)

最佳答案

您不应使用 fit_transform 在新数据上拟合新的估计器,而应使用之前构建的 count_vectorizer,只需使用 transform。这将忽略所有不在字典中的单词。

我不同意 Maxim:虽然这对 CountVectorizer 没有影响,但在连接的数据集上使用 TfidfTransformer 会将信息从测试集泄漏到训练集,您需要避免这种情况。

关于python - 用一些不在训练集中的词预测分类(朴素贝叶斯),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29635043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com