《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用
概述
本文采用的是词集模型。
词集模型:将每个单词出现与否作为一个特征,即忽略了单词出现的次数,从而将句子转化为单词向量后,该向量中只有0和1;对应的是词袋模型,将考虑单词出现的次数,从而得到的单词向量,除了0和1还有大于1的整数。
相关概念:
文档:是训练集合,包含了多个句子
句子:对应一个词向量,向量的长度与词汇表的长度相同,元素为1代表对应位置词汇表中的单词出现,否则不出现
单词(词条):句子中的一个词,对应词向量中的一个元素
词汇表:包含了文档中所有可能出现的单词,但不重复。
从训练文本中计算条件概率p(x|c)和先验概率p(c)
说明:c即文本分类的取值,如正常邮件和垃圾邮件;x即某个单词
1、利用文档构建词汇表,假设长度为n,n即文档不重复单词的个数
如下文档(假设每行为一个句子的单词的切分),构成的词汇表为【one, two, three, four,five, six,seven】
单词 |
单词 |
单词 |
单词 |
Lable |
one |
two |
three |
four |
0 |
two |
three |
four |
five |
0 |
three |
four |
five |
six |
1 |
four |
five |
six |
seven |
1 |
上面假设了每个句子一样长,实际上不一定相同,但并不影响这个理解过程
2、根据构建的词汇表将文档转化为训练矩阵m*n,其中m为句子的个数,n为词向量的长度
上述文档转化后的词向量为:
1 1 1 1 00 0
0 1 1 1 10 0
0 0 1 1 11 0
0 0 0 1 11 1
3、计算概率(假设为二分类)
如下为标量:
p(c=0)=0.5 label为0的句子的个数/句子的总数m
p(c=1)=0.5 label为1的句子的个数/句子的总数m
p(wi|c=0) 词向量中第i个单词在Label=0的句子中出现的概率:从训练矩阵中将Label=0的行向量都取 出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得
p(one|c=0)=1/8 p(two|c=0)=1/4 p(three|c=0)=1/4 p(four|c=0)=1/4 p(five|c=0)=1/8 p(six|c=0)=0 p(seven|c=0)=0
p(wi|c=1) 词向量中第i个单词在Label=1的句子中出现的概率:从训练矩阵中将Label=1的行向量都取出来,将所有行的第i列加起来作为分子,将所有元素都加起来(其实就是一堆1相加)作为分母,相除可得
p(one|c=1)=0 p(two|c=1)=0 p(three|c=1)=1/8 p(four|c=1)=1/4 p(five|c=1)=1/4 p(six|c=1)=1/4 p(seven|c=1)=1/8
如下为向量:
p0V=【p(w1|c=0),p(w2|c=0),p(w3|c=0),…,p(wn|c=0)】=[1/8 1/4 1/4 1/4 1/8 0 0 ]
P1V=【p(w1|c=1),p(w2|c=1),p(w3|c=1),…,p(wn|c=1)】=[0 0 1/8 1/4 1/4 1/4 1/8 ]
对一个句子进行分类
先将该句子转化为词向量V
该句子为0类的概率:Sum(V.dot(p0V)),即将V中每个元素与p0V中对应的每个元素相乘并求和
该句子为1类的概率:Sum(V.dot(p1V)),即将V中每个元素与p1V中对应的每个元素相乘并求和
比较两个概率值,哪个大则属于哪一类
假设有如下句子[one five tree two seven],转换为句子向量为[11 1 0 1 0 1]
(说明:这个模型是不考虑单词之间的关系的以及先后顺序的)
P(c=0)=1/8*1+1/4*1+1/4*1*1/4*0+1/8*1+0*0+1*0=6/8
P(c=1) = 0 *1+ 0*1+ 1/8*1+1/4*0 + 1/4*1+ 1/4*0+ 1/8*1=4/8
所以该句子为0类
《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用相关推荐
- (三)朴素贝叶斯运用——文本分类
1.贝叶斯理论 当我们有样本(包含特征和类别)的时候,我们非常容易通过 p(x)p(y|x)=p(y)p(x|y) p ( x ) p ( y | x ) = p ( y ) p ( x | y ) ...
- 朴素贝叶斯网络matlab实现_基于朴素贝叶斯的文本分类方法实战
基于朴素贝叶斯的文本分类方法 一.朴素贝叶斯原理的介绍 二.朴素贝叶斯分类器的代码实现 分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时会给出这个猜测的概率估计值.朴素贝叶 ...
- 七、朴素贝叶斯中文文本分类
1.朴素贝叶斯中文文本分类 中文分词 停用词 朴素贝叶斯中文分类举例:新闻文档分类 朴素贝叶斯中文分类的具体过程:加载停用词.中文分词.文本向量化.模型训练和保存.模型的加载和预测. 2 中文分词 2 ...
- python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...
Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...
- 基于朴素贝叶斯的文本分类算法
基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...
- 基于朴素贝叶斯实现文本分类
基于朴素贝叶斯实现文本分类 数据集介绍 数据集为网上公开的新闻数据,其中数据集包含10个类别. 模型选择 贝叶斯分类 贝叶斯公式 朴素贝叶斯 拉普拉斯平滑引入 某个属性的条件概率为0,则会导致整体概率 ...
- 朴素贝叶斯基于朴素贝叶斯的文本分类算法
朴素贝叶斯 以及 基于朴素贝叶斯的文本分类算法 参考文章: https://www.cnblogs.com/jorbin/articles/1915888.html
- 朴素贝叶斯文本分类java_基于朴素贝叶斯的文本分类算法
基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...
- 自然语言处理(NLP)编程实战-1.2 使用朴素贝叶斯实现情感分类
内容汇总:https://blog.csdn.net/weixin_43093481/article/details/114989382?spm=1001.2014.3001.5501 课程笔记:1. ...
- 机器学习实战读书笔记(3)朴素贝叶斯
贝叶斯定理 要理解贝叶斯推断,必须先理解贝叶斯定理.后者实际上就是计算"条件概率"的公式. 所谓"条件概率"(Conditional probability), ...
最新文章
- Java NIO 选择器(Selector)的内部实现(poll epoll)
- oracle的sequence是什么,关于Oracle的序列(Sequence)使用内容是什么呢?
- Vivado联合ModelSim仿真设置(附图步骤)
- hdu5399(找规律。。。)
- 如何发现 GitHub 上那些有趣好玩的项目?
- 【追一科技校招】AI浪潮已来,你不可错过的澎湃风口!
- 分布式数据层中间件详解:如何实现分库分表+动态数据源+读写分离
- PHP工程师学习计划
- COLOR_CODE
- 中国金控盐碱地水稻 国稻种芯-林裕豪:粮食安全两会热点
- “自贸云”+“自贸大数据”将加速辽宁自贸区建设与创新
- 误删注册表导致键盘不可用,NumLock一直亮着
- Linux中的数学运算
- 60、JAVA的map集合
- MFC--按键、按钮按下和弹起事件检测
- 好玩的Ipaddian
- 文件(file)操作
- android 百度唤醒,Android百度语音唤醒(has no license,错误码11002)
- 上传文件到服务器打不开,关于软件上传到服务器后出现图片打不开的解决方法...
- 六种常见WIFI部署场景