首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习之scikit-learn开发入门(7)

曹华,2018 年加入去哪儿网技术团队。目前在火车票事业部/技术部小组。个人对图像处理、数据挖掘、图论、VR 等有浓厚兴趣。

机器学习之 scikit-learn 开发入门 -

监督学习 - 朴素贝叶斯分类器

一 概要

本文主要讲解朴素贝叶斯分类算法,主要内容包括:1、朴素贝叶斯分类算法的介绍;2、朴素贝叶斯分类算法库的介绍;3、朴素贝叶斯分类算法应用示例;4、朴素贝叶斯分类算法原理;5、总结。通过文本的介绍,希望大家可以掌握朴素贝叶斯分类算法的使用与了解它的原理。

二 参考资料

贝叶斯分类器_维基百科

三 朴素贝叶斯分类算法的介绍

贝叶斯分类是以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单的,也是常见的一种分类方法。朴素贝叶斯很直观,计算量也不大,在很多领域有广泛的应用,这里我们就对朴素贝叶斯算法的使用和原理做一个小结。

四 朴素贝叶斯分类算法库的介绍

GaussianNB 类是朴素贝叶斯分类器的一种,它的主要参数仅有一个,即先验概率 priors:对应各个类别的先验概率 P。这个值默认不给出,如果不给出此时 P=mk/m。其中 m 为训练集样本总数量,mk 为输出为第 k 类别的训练集样本数。如果给出的话就以 priors 为准。

五 朴素贝叶斯分类算法应用示例

1、导入头文件

2、样本数据

3、划分训练数据和测试数据

4、训练模型

5、预测验证

6、获得结果

[1 2 0 2 1 0 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 2 0 1 2 2 0 1 2 1 1 0 2 1 0 0 1]

[1 2 0 2 1 0 0 1 2 1 0 2 0 1 1 1 1 1 0 1 0 2 0 1 2 2 0 1 2 1 1 0 2 1 0 0 1]

7、计算准确率

六 朴素贝叶斯分类算法原理

对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱”之类的话,其实这就是一种分类操作。那么朴素贝叶斯分类算法的核心是什么呢?

换个表达形式就会清晰很多,如下:

最终求的 P(类别|特征)即可。

七 原理例题分析

给定数据如下:

如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,用贝叶斯分类算法判断一下女生是嫁还是不嫁?这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,结果就是谁。 因为特征之间是相互独立的,所以根据贝叶斯可以得到以下等式:

下面将一个一个的进行统计计算(在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可)。首先我们来梳理下数据的条数:1、嫁有6条数据,即嫁的数量是6;2、不嫁有6条数据,即不嫁的数量是6;3、总样本12条数据,即总数量是12;4、不帅、嫁有3条数据,即不帅、嫁的数量是3;5、性格不好、嫁有1条数据,即性格不好、嫁的数量是1;6、矮、嫁有1条数据,即矮、嫁的数量时1;7、不上进、嫁有1条数据,即不上进、嫁的数量是1;8、不帅、不嫁有2条数据,即不帅、不嫁的数量是2;9、性格不好、不嫁有3条数据,即性格不好、不嫁的数量是3;10、矮、不嫁有6条数据,即矮、不嫁的数量是6;11、不上进、不嫁有4条数据,即不上进、不嫁的数量是4;12、不帅有5条数据,即不帅的数量是5;13、性格不好有4条数据,即性格不好的数量是4;14、身高矮有7条数据,即矮的数量是7;15、不上进有5条数据,不上进的数量是5;

下面以同样的方法求出 P(不嫁|不帅、性格不好、身高矮、不上进),首先公式如下:

①P(不嫁)=不嫁的数量/总数量=6/12=1/2②P(不帅|嫁)=不帅、不嫁的数量/不嫁的数量=2/6=1/3③P(性格不好|嫁)=性格不好、不嫁的数量/不嫁的数量=3/6=1/2④P(矮|嫁)=矮、不嫁的数量/嫁的数量=6/6=1⑤P(不上进|嫁)=不上进、不嫁的数量/不嫁的数量=4/6=2/3分母与上式相同不再计算。计算过程如下:P(不嫁|(不帅、性格不好、身高矮、不上进))=(1/3 * 1/2 * 1 * 2/3 * 1/2)/(5/12 * 1/3 * 7/12 * 5/12)=1.645714285714286。于是有 P(不嫁|不帅、性格不好、身高矮、不上进)>P(嫁|不帅、性格不好、身高矮、不上进)。所以我们根据朴素贝叶斯算法可以给出的答案是不嫁。这就是贝叶斯大概的推倒过程。

八 总结

朴素贝叶斯的主要优点有:1、朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率;2、对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练;3、对缺失数据不太敏感,算法也比较简单,常用于文本分类。朴素贝叶斯的主要缺点有:1、理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进;2、需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳;3、由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率;4、对输入数据的表达形式很敏感。(朴素贝叶斯是一个简单的基于特征进行统计的模型,因此数据的表现形式是连续特征还是离散特征都会对模型的概率计算结果产生很大的影响,进而对基于特征的预测结果产生影响。)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190116G093QM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券