python中如何使用朴素贝叶斯算法


Posted in Python onApril 06, 2017

这里再重复一下标题为什么是"使用"而不是"实现":

首先,专业人士提供的算法比我们自己写的算法无论是效率还是正确率上都要高。

其次,对于数学不好的人来说,为了实现算法而去研究一堆公式是很痛苦的事情。

再次,除非他人提供的算法满足不了自己的需求,否则没必要"重复造轮子"。

下面言归正传,不了解贝叶斯算法的可以去查一下相关资料,这里只是简单介绍一下:

1.贝叶斯公式:

P(A|B)=P(AB)/P(B)

2.贝叶斯推断:

P(A|B)=P(A)×P(B|A)/P(B)

用文字表述:

后验概率=先验概率×相似度/标准化常量

而贝叶斯算法要解决的问题就是如何求出相似度,即:P(B|A)的值

3. 在scikit-learn包中提供了三种常用的朴素贝叶斯算法,下面依次说明:

1)高斯朴素贝叶斯:假设属性/特征是服从正态分布的(如下图),主要应用于数值型特征。

 python中如何使用朴素贝叶斯算法

使用scikit-learn包中自带的数据,代码及说明如下:

>>>from sklearn import datasets ##导入包中的数据
>>> iris=datasets.load_iris() ##加载数据
>>> iris.feature_names  ##显示特征名字
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> iris.data   ##显示数据
 array([[ 5.1, 3.5, 1.4, 0.2],[ 4.9, 3. , 1.4, 0.2],[ 4.7, 3.2, 1.3, 0.2]............
>>> iris.data.size  ##数据大小 ---600个
>>> iris.target_names  ##显示分类的名字 
 array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
>>> from sklearn.naive_bayes import GaussianNB ##导入高斯朴素贝叶斯算法
>>> clf = GaussianNB()    ##给算法赋一个变量,主要是为了方便使用
>>> clf.fit(iris.data, iris.target)  ##开始分类。对于量特别大的样本,可以使用函数partial_fit分类,避免一次加载过多数据到内存

>>> clf.predict(iris.data[0].reshape(1,-1)) ##验证分类。标红部分特别说明:因为predict的参数是数组,data[0]是列表,所以需要转换一下
array([0])
>>> data=np.array([6,4,6,2])   ##验证分类
>>> clf.predict(data.reshape(1,-1))
array([2])

这里涉及到一个问题:如何判断数据符合正态分布? R语言里面有相关函数判断,或者直接绘图也可以看出来,但是都是P(x,y)这种可以在坐标系里面直接

画出来的情况,而例子中的数据如何确定,目前还没有搞明白,这部分后续会补上。

2)多项式分布朴素贝叶斯:常用于文本分类,特征是单词,值是单词出现的次数。

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100)) ##返回随机整数值:范围[0,5) 大小6*100 6行100列
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True) 
>>> print(clf.predict(X[2]))
[3]

3)伯努力朴素贝叶斯:每个特征都是是布尔型,得出的结果是0或1,即出现没出现

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(2, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True) 
>>> print(clf.predict(X[2]))
[3]

补充说明:此文还不完善,示例一中也有部分说明需要写,最近事情较多,后续会逐渐完善。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
Python实现基于HTTP文件传输实例
Nov 08 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
Python reduce()函数的用法小结
Nov 15 Python
Python3.4解释器用法简单示例
Mar 22 Python
python pandas 时间日期的处理实现
Jul 30 Python
Python 调用 Windows API COM 新法
Aug 22 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
Python unittest框架操作实例解析
Apr 13 Python
Python使用多进程运行含有任意个参数的函数
May 02 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 Python
python获取当前运行函数名称的方法实例代码
Apr 06 #Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 #Python
使用Python对SQLite数据库操作
Apr 06 #Python
使用Python对MySQL数据操作
Apr 06 #Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 #Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 #Python
由浅入深讲解python中的yield与generator
Apr 05 #Python
You might like
php 异常处理实现代码
2009/03/10 PHP
优化PHP程序的方法小结
2012/02/23 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
一套带答案的C++笔试题
2014/01/10 面试题
建筑专业自我鉴定
2013/10/22 职场文书
外贸主管求职简历的自我评价
2013/10/23 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
文体活动实施方案
2014/03/27 职场文书
体育比赛口号
2014/06/09 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
应届毕业生自荐信
2015/03/04 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
经典爱情感言
2015/08/03 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
Golang并发工具Singleflight
2022/05/06 Golang