朴素贝叶斯
假定特征于特征之间互相独立的贝叶斯公式
概率基础复习
贝叶斯公式
拉普拉斯平滑系数
为了避免求贝叶斯概率时某些项为0,通常采用拉普拉斯平滑系数
商品评论情感分析
sklearn.naive_bayes.MultinomiaNB(alpha=1.0)
alpha是拉普拉斯平滑系数
import pandas as pd
import numpy as np
import jieba
import matplot.pyplot as plt
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
#1获取数据
data=pd.read_csv('./data1/书籍评价.csv',encoding='gbk')
data
#2数据基本处理
#2.1取出内容列,用于后面分析
content=data['内容']
#2.2把评价中的好评差评转换为数字
data.loc[data.loc[:,'评价']=='好评','评论编号']=1
data.loc[data.loc[:,'评价']=='差评','评论编号']=0
#2.3选择停用词
stopwords=[]
with open('./data1/stopwords.txt','r',encoding='utf-8') as f:
lines=f.readlines()
for tmp in lines:
line=tmp.strip()
stopwords.append(line)
stopwords=list(set(stopwords))
#2.4把“内容”处理,转化成标准格式
comment_list=[]
for tmp in content:
seg_list=jieba.cut(tmp,cut_all=False)
seg_str=','.join(seg_list)
comment_list.append(seg_str)
#2.5统计词的个数
con=CountVectorizer(stop_words=stopwords)
X=con.fit_transform(comment_list)
#2.6准备训练集和测试集
x_train=X.toarray()[:10,:]
y_train=data['评价'][:10]
x_test=X.toarray()[10:,:]
y_test=data['评价'][10:]
#3模型训练
mb=MultinomialNB(alpha=1)
mb.fit(x_train,y_train)
y_pre=mb.predict(x_test)
print('预测值:',y_pre)
print('真实值:',y_test)
#4模型评估
mb.score(x_test,y_test)
总结
朴素贝叶斯的优缺点
朴素贝叶斯和逻辑回归的区别