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 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
python处理html转义字符的方法详解
Jul 01 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python切片列表字符串如何实现切换
Aug 06 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python可以用来做什么
Nov 23 Python
python如何用matplotlib创建三维图表
Jan 26 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处理json格式数据经典案例总结
2016/05/19 PHP
微信红包随机生成算法php版
2016/07/21 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
window.onload使用指南
2015/09/13 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
python远程邮件控制电脑升级版
2019/05/23 Python
django自带调试服务器的使用详解
2019/08/29 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
质检的岗位职责
2013/11/17 职场文书
员工安全责任书范本
2014/07/24 职场文书
黄山导游词
2015/01/31 职场文书
面试通知邮件
2015/04/20 职场文书
婚宴来宾致辞
2015/07/28 职场文书
七年级话题作文之执着
2019/11/19 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
python中%格式表达式实例用法
2021/06/18 Python
sql注入报错之注入原理实例解析
2022/06/10 MySQL
pandas中pd.groupby()的用法详解
2022/06/16 Python