首页 > 编程知识 正文

python贝叶斯网络(朴素贝叶斯 python)

时间:2023-05-06 10:43:59 阅读:77892 作者:4821

朴素贝叶斯分类算法广泛应用于文本分类场景、垃圾邮件、网络新闻等分类任务中,是一种监控学习算法。 独立地考虑每个维特征被分类的条件概率,并且通过集成这些概率来分类和预测特征向量。 也就是说,“假设各维特征分类的条件概率是相互独立的”假设将模型预测中要计算的参数规模从指数级降低到线性级,大大提高了计算效率。 该算法在模型训练过程中没有考虑各维特征的相互关系,对于相关性强的数据特征分类效果较差。

朴素贝叶斯的优缺点

优势:数据集小时,模型性能好,适合增量培训、多分类任务。

缺点:对输入数据的表现形式很敏感,由于“朴素”的特点,也可能造成精度的损失。

MultinomialNB算法的一般流程

数据采集:通过NumPy和pandas以及sklearn.datasets等方式获取或处理数据集数据预处理:进行测试集、训练集构建、数据标准化处理,提取文本特征向量矩阵模型训练: MultinomialNB算法模型测试:使用测试集验证模型性能。 模型优化:使用交叉检验法优化k值的值。

MultinomialNB(多项式模型)的Python实现

1.数据收集

此数据集包含分布在20个不同新闻组中的18846个文档。

数据源: froms klearn.datasetsimportfetch _ 20 news groups

数据标签:

' alt.atheism ',' comp.graphics ',' comp.os.ms-windows.misc ',' comp.sys.ibm.pc.hardware ',' comp ' rec.sport.hockey '、' sci.crypt '、' sci.crypt '、' sci.crypt '、' soc.religion.christian '、' talk.polt

示例数据:

from : alexandersamuelmcdiarmidam2o @ Andrew.CMU.edu

subject :驱动程序?

Organization: Sophomore,Mechanical Engineering,Carnegie Mellon,Pittsburgh,PA

Lines: 15

NTP-posting-host : po4. Andrew.CMU.edu

1 ) ihaveanoldjasminedrivewhichicannotusewithmynewsystem .

使用sk learn.datasets.fetch _ 20 news groups (新闻数据收集设备)加载数据集,Python实现如下:

2 .数据预处理

使用sk learn.model _ selection.train _ test _ split方法,随机抽取整个数据集的80%作为训练集,其余20%作为测试集,进行数据标准化处理

通过4种方法实现文本特征向量的提取,研究不同文本特征提取方法对算法分类识别率的影响:

CountVectorizer提取特征向量。 CountVectorizer提取特征向量,去除停止字。 TfidfVectorizer提取文本特征向量。 TfidfVectorizer提取文本特征向量,去除停止字。 CountVectorizer只考虑各词汇在训练文本中出现的频率,而TfidfVectorizer除了考虑某个词汇在训练文本中出现的频率外,还可以降低出现频率高且无意义的词汇带来的影响。 训练文本越多,TfidfVectorizer方式越有利,Python实现如下。

"https://p26.toutiaoimg.com/origin/pgc-image/ec23f563f9be4f79b28165233233cb32?from=pc">

3. 模型训练及测试

测试集验证结果如下:

扩展:生成模型和判别模型的区别

有监督机器学习方法可以分为生成模型和判别模型。

生成模型

无穷样本 -> 概率密度模型 = 产生式模型 -> 预测

生成式模型求得联合概率P(Y,X),对于未见示例X,需要求出X与不同标签之间的联合概率分布,然后概率大的获胜。

常见生成模型:朴素贝叶斯、KNN、高斯混合模型、隐马尔可夫模型、限制玻尔兹曼机、文档主题生成模型(LDA)生成模型举例:利用生成模型是根据哈士奇的特征首先学习出一个哈士奇的模型,然后根据边境牧羊犬的特征学习出一个边境牧羊犬的模型,然后从这只羊中提取特征,放到哈士奇羊模型中看概率是多少,在放到边境牧羊犬模型中看概率是多少,哪个概率大就是哪种品种的狗,求的是P(X,Y),即联合概率。

判别模型

有限样本 -> 判别函数 = 判别式模型 -> 预测

对于判别式模型来说求得P(Y|X),对未见示例X,根据P(Y|X)可以求得标记Y,即可以直接判别出标签。

常见判别模型:K-近邻、决策树、SVM、线性判别分析(LDA)、支持向量机、线性回归、传统的神经网络、逻辑斯蒂回归。判别模型举例:要确定一个狗是哈士奇还是边境牧羊犬,用判别模型的方法是从训练集中学习到模型,然后通过提取这只狗的特征来直接预测出这只狗的品种(正例)概率,其根据X“判别”Y,求的是P(Y|X),即后验概率。

判别式模型是根据一只狗的特征可以直接给出这只狗品种(正例)的概率(比如 概率为0.8),而生成式模型是要都试一试((X,Y¹), (X,Y²), (X,Y³),…),概率最大的那个就是这只狗的品种结果。

后续会继续分享线性、决策树、SVM、随机森林、K均值聚类等算法介绍及Python实现,若对你有所帮助,欢迎大家评论、留言、关注,感谢支持!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。