美文网首页
朴素贝叶斯(Naive Bayes)算法笔记(一)-Python

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

作者: keepStriving | 来源:发表于2017-03-15 16:32 被阅读4731次

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

    再次申明:本文的理论知识来自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源数据

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

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

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

    相关文章

      网友评论

          本文标题:朴素贝叶斯(Naive Bayes)算法笔记(一)-Python

          本文链接:https://www.haomeiwen.com/subject/ewllnttx.html