朴素贝叶斯(Naive Bayes)算法笔记(一)-Python

2017-03-15  本文已影响4731人  keepStriving

写在前面的话:哈喽,大家早安、午安、晚安喽,欢迎大家指点,也希望我的内容可以温暖、帮助同在学习路上的人们~

再次申明:本文的理论知识来自Peter Harrington的《机器学习实战》和李航的《统计学习方法》,非常感谢这些优秀人物和优秀书籍

正文开始~~


首先要强调一下,朴素贝叶斯与贝叶斯是不一样的。

贝叶斯定理:贝叶斯理论是以18世纪的一位神学家托马斯.贝叶斯(Thomas Bayes)命名。通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A(发生)的条件下的概率是不一样的;然而,这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述,见图1

图1 贝叶斯公式

朴素贝叶斯:朴素贝叶斯方法是基于贝叶斯定理和特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率(Maximum A Posteriori)最大的输出y。

图2 朴素贝叶斯的条件独立性假设

朴素贝叶斯算法原理:其实朴素贝叶斯方法是一种生成模型,对于给定的输入x,通过学习到的模型计算后验概率分布P(Y=c_k | X=x),将后验概率最大的类作为x的类输出。其中后验概率计算根据贝叶斯定理进行:

图3 朴素贝叶斯后验概率

然后,最后的朴素贝叶斯分类模型为:

图4 朴素贝叶斯分类模型

基于Python实现朴素贝叶斯方法

流程:1)收集数据;2)准备数据:需要数值型或布尔型数据。如果是文本文件,要解析成词条向量bai;3)分析数据:有大量特征时,用直方图分析效果更好;4)训练算法:计算不同的独立特征的条件概率;5)测试算法:计算错误率;6)使用算法:一个常见的朴素贝叶斯应用是文档分类。

接下来的例子是源于《机器学习实战》中:分析两个不同地方征婚广告的用词

1)首先,从RSS获取数据

图1 从RSS获取数据

备注:'import sys' 'reload(sys)' 'sys.setdefaultencoding('utf-8')'这三句话最好同时加上,这样可以有效避免从RSS获取数据发生乱码

其实,从RSS获取数据基本需要掌握的就是parse函数,详情见使用Python获取并解析 RSS feed-Feedparser

2)接下来,准备一些基础函数

(1)将文本解析为词向量,此时需要引入正则模块’re‘

图2 将文本解析为词向量

(2)从简析的文档中生成词汇列表

图3 

备注:Python中的set()集合中的元素是各不相同的,由此创建没有重复单次的词汇表

(3)获取高频词中的前n个

图4 获取高频词

3)朴素贝叶斯函数

图5 朴素贝叶斯函数

4)基于朴素贝叶斯结果分类

图6 分类函数

5)最终调用函数代码见图7

图7 对比两种RSS源数据

这篇基本就是这些~····~

题外话:我目前也是初学,所以基本是一板一眼的按照资料的内容自己实现,请大牛轻拍^`^。希望自己在这段时间将这些基础的东西都了解一遍后,在下一阶段的强化阶段可以独立根据一些生活中的问题,获取数据,用机器学习来解决,为了明天,干了这碗鸡汤,继续努力!!!

希望对大家有所帮助,谢谢大家

上一篇下一篇

猜你喜欢

热点阅读