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 相关文章推荐
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
Python多进程原理与用法分析
Aug 21 Python
浅谈django的render函数的参数问题
Oct 16 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
django框架cookie和session用法实例详解
Dec 10 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
python简单实现9宫格图片实例
Sep 03 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
Python的Tqdm模块实现进度条配置
Feb 24 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语法(3)
2006/10/09 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
canvas的神奇用法
2017/02/03 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
Python实现简单文本字符串处理的方法
2018/01/22 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
物理研修随笔感言
2014/02/14 职场文书
新春联欢会主持词
2014/03/24 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
语文教育专业求职信
2014/06/28 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
使用Ajax实现无刷新上传文件
2022/04/12 Javascript
python神经网络ResNet50模型
2022/05/06 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers