调用结构:
from sklearn.naive_bayes import MultinomialNB # 从sklean.naive_bayes里导入朴素贝叶斯模型
from sklearn.feature_extraction.text import CountVectorizer # 从sklearn.feature_extraction.text里导入文本特征向量化模块
# change_X_train是训练集样本,change_Y_train是训练集标签
# 这里面的change_X_train和,change_Y_train必须是str类型的列表
vec = CountVectorizer(analyzer = 'char', lowercase=False)
X_train = vec.fit_transform(change_X_train)
X_test = vec.transform(change_X_test)
#3.使用朴素贝叶斯进行训练
mnb = MultinomialNB() # 使用默认配置初始化朴素贝叶斯
mnb.fit(X_train, y_train) # 利用训练数据对模型参数进行估计
y_predict = mnb.predict(X_test) # 对参数进行预测
#4.获取结果报告
print ('The Accuracy of Naive Bayes Classifier is:', mnb.score(X_test, y_test))
相关报错一:AttributeError:‘numpy.ndarray’ object has no attribute ‘lower’
这个报错是因为数据类型是,numpy下的array类型,需要使用tolist()函数将变量变成list型。一般是标准化后变成了ndarray,也可取消标准化
相关报错二:‘list’ object has no attribute ‘lower’
这个报错是因为sklearn中的朴素贝叶斯训练数据集必须是[‘1 1 1’, ‘2 2 2’, …, ’ n n n’]这种每项数据类型是str的列表。将所有的数据换成str就好了
相关报错三:ValueError: empty vocabulary; perhaps the documents only contain stop words
这个报错是CountVectorizer参数设置的问题,不能使用默认配置
不能是:vec = CountVectorizer()
需要是:vec = CountVectorizer(analyzer = 'char', lowercase=False)