这是对单个评论进行情感分析的代码,由于没有数据集,我无法确定在朴素贝叶斯模型中classifier.fit方法的第二个参数应该是什么?
# 导入库import numpy as npimport matplotlib.pyplot as pltimport pandas as pd# 清理代码import re import nltk nltk.download('stopwords') from nltk.corpus import stopwords from nltk.stem.porter import PorterStemmer new_review = 'I love this restaurant so much'new_review = re.sub('[^a-zA-Z]', ' ', new_review)new_review = new_review.lower()new_review = new_review.split()ps = PorterStemmer()all_stopwords = stopwords.words('english')all_stopwords.remove('not')new_review = [ps.stem(word) for word in new_review if not word in set(all_stopwords)]new_review = ' '.join(new_review)new_corpus = [new_review]# 创建词袋模型from sklearn.feature_extraction.text import CountVectorizercv = CountVectorizer(3)new_X_test = cv.fit_transform(new_corpus).toarray()#new_X_test = cv.transform(new_corpus).toarray()# 在朴素贝叶斯模型中进行训练from sklearn.naive_bayes import GaussianNBclassifier = GaussianNB()classifier.fit(new_X_test, )# 预测结果#y_pred = classifier.predict(X)new_y_pred = classifier.predict(new_X_test)print(new_y_pred)#new_X_test = cv.transform(new_corpus).toarray()#new_y_pred = classifier.predict(X)#print(new_y_pred)
回答:
根据sklearn.naive_bayes.GaussianNB.fit()手册页面,第二个参数是y,其中:
y: 形状为(n_samples,)的数组类型
目标值。
在你的例子中,目标值是你唯一评论的情感。朴素贝叶斯是一种监督分类算法。”监督”意味着在训练(或模型拟合)过程中,你需要通过提供正确的目标值(或标签)来指导算法。
目前的代码实际上没有太大意义。你无法用仅一个样本有意义地训练/拟合模型。你需要有一个包含许多评论的数据集来拟合模型,然后尝试预测新样本。