基于概率论的分类方法:朴素贝叶斯
来源:互联网 发布:手机入侵软件 编辑:程序博客网 时间:2024/05/01 17:16
基础回顾
我们称之为“朴素”,是因为整个形式化过程只做最原始、最简单的假设。
贝叶斯准则:
贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知p(x|c),要求p(c|x),那么可以使用下面的计算方法:
p(c|x) = p(x|c)p(c)/p(x)。
根据上述公式计算出两个概率p1(x,y)和p2(x,y)。
如果p1(x,y) > p2 (x, y ) , 那么属于类别1;
如果p1(x,y) < p2 (x, y ) , 那么属于类别2。
但这两个准则并不是贝叶斯决策理论的所有内容。使用p1( )和p2()只是为了尽可能简化
描述,而真正需要计算和比较的是p(c1|x,y)和p(c2|x,y)。这些符号所代表的具体意义是:
给定某个由x、y表示的数据点,那么该数据点来自类别c1的概率是多少?数据点来自类别c2的概
率又是多少?注意这些概率与刚才给出的概率p(x,y|c1)并不一样,不过可以使用贝叶斯准则
来交换概率中条件与结果。具体地,应用贝叶斯准则得到:
使用这些定义,可以定义贝叶斯分类准则为:
□如果p(c1|x,y) > P(c2|x, y ) , 那么属于类别 c1。
□如杲p(c1|x,y) < P(c2|x, y ) , 那么属于类别 c2。
准备数据:从文本中构建词向量
准备数据:从文本中构建词向量
要从文本中获取特征,需要先拆分文本。具体如何做呢?这里的特征是来自文本的词条
(token), 一个词条是字符的任意组合。 可以把词条想象为单词,也可以使用非单词词条,如URL、
IP地址或者任意其他字符串。然后将每一个文本片段表示为一个词条向量,其中值为1表示词条
出现在文档中,0表示词条未出现。
词表到向量的转换函数:
运行结果:
判断留言板留言是否为垃圾信息
现在已经知道一个词是否出现在一篇文档中,也知道该文档所属的类别。重写贝叶斯准则,将之前的x、y 替换为w。粗体w表示这是一个向量,即它由多个数值组成。在这个例子中,数值个数与词汇表中的词个数相同。
p(ci|w) = p(w|ci)p(ci)/p(w)。
我们将使用上述公式,对每个类计算该值,然后比较这两个概率值的大小。如何计算呢?首
先可以通过类别i(侮辱性留言或非侮辱性留言)中文档数除以总的文档数来计算概率p ( ci ) 。接
下来计算p(w|ci), 这里就要用到朴素贝叶斯假设。如果将w展开为一个个独立特征,那么就可
以将上述概率写作p(w0,w1,w2..wN|ci) 。这里假设所有词都互相独立,该假设也称作条件独立性
假设,它意味着可以使用p(w0|ci)p(w1|ci)p(w2|ci)..p(wN|ci)来计算上述概率,这就极大地
简化了计算的过程。
朴素贝叶斯分类器训练函数:
朴素贝叶斯分类函数:
运行结果:
使用朴素贝叶斯过滤垃圾邮件
文件解析及完整的垃圾邮件测试函数:
3次运行结果(多运行几次,取平均值):
下一个例子和这个差不多,就不记录了。
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法--朴素贝叶斯
- C++实现基于概率论的分类方法--朴素贝叶斯分类
- 机器学习实战--基于概率论的分类方法:朴素贝叶斯
- 机器学习之基于概率论的分类方法 : 朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯算法实践学习
- 《机器学习实战》笔记之四——基于概率论的分类方法:朴素贝叶斯
- 机器学习实战python版第四章基于概率论的分类方法 朴素贝叶斯
- 机器学习实战(3)--(基于概率论的分类方法)朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯---过滤网站恶意留言
- 保卫方案
- 递归算法
- python初级教程:入门详解
- 《数据结构》---三元组的实现
- 修改root密码出错,文件系统变成只读
- 基于概率论的分类方法:朴素贝叶斯
- VC2010下编译log4cxx(windows环境下)
- 高斯消元训练
- 安卓笔记之PagerSlidingTabStrip
- python问题之包
- Python列表复制操作
- 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的解析
- 又是一波节奏--smtplib--python学习
- Linux 线程同步的三种方法