赞
踩
朴素贝叶斯:用概率去预测
朴素:指的是,特征之间相互独立
拉普拉斯平滑系数,每个种类都加k,避免条件概率出现0
区分情书与作业的例子,用关键词:
是情书的概率更高,所以估计为情书
import pandas as pd import numpy as np import jieba import matplotlib.pyplot as plt from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayee import MultinomialNB #获取数据 data = pd.read_csv("./书籍评价.csv",encoding='gbk') data #数据基本处理 #2.1取出内容列,用于后面分析 content = data['内容'] content #把评价列中好评差评转成数字 data.loc[:,'评价'] data.loc[data.loc[:,'评价']=='好评','评论编号']=1 data.loc[data.loc[:,'评价']=='差评','评论编号']=0 #2.3选择停用词 stopwords=[] with open('./stopwords.txt','r',encoding='utf-8') as f: lines = f.readlines() #print(lines) for tmp in lines: line = tmp.strip() stopwords.append(line) stopwords = list(set(stopwords)) stopwords #2.4 把‘内容’处理,转化成标准格式 comment_list = [] for tmp in content: print(tmp) seg_list = jieba.cut(tmp,cut_all=False) seg_str = ','.join(seg_list) comment_list.append(seg_str) comment_list #统计词个数 con = CountVetorizer(stop_words = stopwords) X = con,fit_transform(comment_list) X.toarray() con.get_feature_names() #2.5分割训练集和测试集 x_train = x.toarray()[:10,:] y_train = data['评价'][:10] x_train y_train 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_pre)
#4.模型评估
mb.score(x_test,y_test)
优:有稳定的分类效率;对缺失数据不敏感;常用于文本分类
缺:某些时候会由于假设的先验模型的原因导致预测效果不佳
朴素贝叶斯:基于贝叶斯定理和特征条件独立假设的分类方法
朴素贝叶斯朴素在哪里?
当Y确定时,X的各个特征分量取值之间相互独立
为什么引入条件独立假设?
为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题
在估计条件概率时出现概率为0的情况怎么办?
引入拉普拉斯平滑系数
为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍然能取得较好效果?
在使用分类器之前,进行了特征选择,这一过程排除特征之间的共线性,选择相对较为独立的特征
朴素贝叶斯与逻辑回归的区别?
朴素贝叶斯是生成模型,而LR是判别模型
朴素贝叶斯是基于很强的条件独立假设,而LR对此没有要求
朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集
生成模型VS判别模型?
判别式模型:要确定一个羊是山羊还是绵羊,从历史数据中学习到模型,通过提取这只羊的特征来预测这只羊是山羊的概率,以及是绵羊的概率。(一个模型)
生成式模型:根据山羊的特征学习出一个山羊模型,根据绵羊模型学习出一个绵羊模型。然后从这只羊中提取特征,放在山羊模型中看概率是多少,放在绵羊中看概率是多少,哪个大取哪个。(两个模型)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。