python实现排列组合公式算法_朴素贝叶斯算法的Python实现
朴素贝叶斯分类算法被广泛应用于文本分类场景中、包含垃圾邮件、互联网新闻等分类任务,属于有监督学习算法。它独立考量每一维度特征被分类的条件概率,然后综合这些概率对其所在的特征向量做出分类预测,即“假设各个维度上的特征被分类的条件概率之间是相互独立的”,该假设使得模型预测需要计算的参数规模从指数级降至线性级,极大地提升计算效率。该算法在模型训练过程中没考虑各个维度特征的相互联系,对于关联性较强的数据特征分类效果较差。
朴素贝叶斯的优缺点
优点:数据集较小时模型表现很好,适合增量式训练、多分类任务。
缺点:对输入数据的表达形式很敏感,由于其“朴素”的特点,也会带来一些准确率上的损失。
MultinomialNB算法的一般流程
- 数据采集:使用NumPy与pandas以及sklearn.datasets等方式获取或处理数据集
- 数据预处理:测试集、训练集构建,进行数据标准化处理,提取文本特征向量矩阵。
- 模型训练:MultinomialNB算法
- 模型测试:使用测试集,验证模型性能。
- 模型优化:使用交叉验证法优化K值取值。
MultinomialNB(多项式模型)的Python实现
1. 数据采集
该数据集包含分布在20个不同新闻组中的18846篇文档,
数据来源:from sklearn.datasets import fetch_20newsgroups
数据标签:
'alt.atheism', 'comp.graphics', 'comp.os.ms-windows.misc', 'comp.sys.ibm.pc.hardware', 'comp.sys.mac.hardware', 'comp.windows.x', 'misc.forsale', 'rec.autos', 'rec.motorcycles', 'rec.sport.baseball', 'rec.sport.hockey', 'sci.crypt', 'sci.electronics', 'sci.med', 'sci.space', 'soc.religion.christian', 'talk.politics.guns', 'talk.politics.mideast', 'talk.politics.misc', 'talk.religion.misc'
数据样例:
From: Alexander Samuel McDiarmid
Subject: driver ??
Organization: Sophomore, Mechanical Engineering, Carnegie Mellon, Pittsburgh, PA
Lines: 15
NNTP-Posting-Host: po4.andrew.cmu.edu
1) I have an old Jasmine drive which I cannot use with my new system ……
使用sklearn.datasets.fetch_20newsgroups(新闻数据抓取器),加载数据集,Python实现如下:
2. 数据预处理
使用 sklearn.model_selection.train_test_split方式,将整个数据集随机抽取80%作为训练集、剩余的20%作为测试集,并且进行数据标准化处理,且重复运行时,训练集与测试集不发生变化,Python实现如下:
尝试使用四种方式实现文本特征向量的提取,并查看不同文本特征提取方式对算法分类识别率的影响:
- CountVectorizer提取特征向量。
- CountVectorizer提取特征向量且去掉停词。
- TfidfVectorizer提取文本特征向量。
- TfidfVectorizer提取文本特征向量且去掉停词。
CountVectorizer只考虑每种词汇在训练文本中出现的频率,而TfidfVectorizer除了考量某词汇在训练文本中出现的频率之外,能够降低出现频率高没有意义的词汇出现带来的影响,训练文本的数量越多,TfidfVectorizer方式更有优势,Python实现如下:
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实现,若对你有所帮助,欢迎大家评论、留言、关注,感谢支持!
python实现排列组合公式算法_朴素贝叶斯算法的Python实现相关推荐
- 用python实现朴素贝叶斯算法_朴素贝叶斯算法 python 实现
应用贝叶斯准则: 使用上面这些定义,可以定义贝叶斯分类准则为: 如果 P(c1|x, y) > P(c2|x, y), 那么属于类别 c1; 如果 P(c2|x, y) > P(c1|x, ...
- java mllib 算法_朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...
- 朴素贝叶斯算法_朴素贝叶斯算法原理
摘要:本文介绍了贝叶斯公式,并根据公式而产生的朴素贝叶斯分类算法在机器学习中的应用,并列举了朴素贝叶斯分类算法的优缺点. 1贝叶斯公式的理解 贝叶斯定理(Bayes' theorem)是概率论中的一个 ...
- k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优
k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优 k近邻算法 k近邻算法概述 k近邻算法代码实现 k近邻算法的评价 朴素贝叶斯算法 朴素贝叶斯算法概述 朴素贝叶斯代码实现 朴素贝叶斯的评价 分类模型 ...
- k近邻算法与朴素贝叶斯算法
机器学习--k近邻算法与朴素贝叶斯算法 k近邻算法 朴素贝叶斯 理论基础: 精确率和召回率 交叉验证与网格搜索 k近邻算法 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大 ...
- python贝叶斯算法的论文_朴素贝叶斯算法从入门到Python实践
1,前言 很久不发文章,整理些干货,希望相互学习吧.进入主题,本文主要时说的为朴素贝叶斯分类算法.与逻辑回归,决策树一样,是较为广泛使用的有监督分类算法,简单且易于理解(号称十大数据挖掘算法中最简单的 ...
- python程序员买西瓜代码_朴素贝叶斯python代码实现(西瓜书)
本文将要为您介绍的是朴素贝叶斯python代码实现(西瓜书),具体完成步骤:朴素贝叶斯python代码实现(西瓜书) 摘要: 朴素贝叶斯也是机器学习中一种非常常见的分类方法,对于二分类问题,并且数据集 ...
- 算法的优缺点_朴素贝叶斯算法的优缺点
机器学习算法与自然语言处理推荐 来源:http://www.cnblogs.com/pinard/p/6069267.html 作者:刘建平Pinard [机器学习算法与自然语言处理导读]朴素贝 ...
- k-近邻算法及朴素贝叶斯算法
目录 一.k-近邻算法的定义 二.k近邻算法实例-预测入住位置 三.k-临近算法优缺点 四.精确率与召回率 1.精确率 2.召回率 3.F1-score 4.classification_report ...
最新文章
- 信步漫谈之Git—环境搭建及入门
- c++获取sqlite3数据库表中所有字段的方法
- U-Time巡回完美收官:精细化数据将主导未来运营趋势(数据应用篇)
- 刚聊完就弹窗推荐,这些 APP 是在偷听吗?
- 区块链开发指南_区块链软件开发详解
- 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
- hadoop三大组件
- 精选西门子PLC工程实例源码【共300套】
- java http 手机浏览器下载word文档失败的问题
- aspose转pdf不显示中文_Word转PDF后有空白页是怎么回事?
- WPS如何将金额快速改为万元显示
- 为什么中国软件不咋样
- 无人机优化无线传感器网络matlab代码
- 常见的分类算法及分类算法的评估方法
- css动画结束闪烁,CSS秘密花园: 闪烁动画
- LeetCode 2035. 将数组分成两个数组并最小化数组和的差
- python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
- mac的python换字体_在Mac OS X 10.6上,无法在Python的Matplotlib中将字体更改为Helvetica...
- 通过vnc远程linux方法,如何通过VNC远程访问Linux虚拟机
- javascript 弹出对话框
热门文章
- 类的序列化[Serializable]
- php cpu缓存 执行 代码,缓存PHP页面的代码,可以减轻CPU和MYSQL负担
- java 文本排序_如何使用Java按最高编号对文本文件进行排序
- jquery ajax 解决跨域访问问题
- pm2 守护 nuxt
- java spring注入 静态方法_java相关:spring为类的静态属性实现注入实例方法
- matlab画线不同颜色_怎样画线框图才有意义?
- 乒乓球单循环赛_重庆市首届乒乓球业余锦标赛开拍 冠军奖3万 总奖金近10万
- ORM是什么?如何理解ORM
- MapReduce计数器