贝叶斯分类是利用概率统计知识进行分类的算法,其分类原理是贝叶斯定理。贝叶斯定理的公式如下:

贝叶斯公式表明,我们可以从先验概率P(A)、条件概率P(B|A)和证据P(B)来计算出后验概率。

朴素贝叶斯分类器就是假设证据之间各个条件相互独立的基础上,根据计算的后验概率选择各类别后验概率最大的类别作为目标证据的类别。

构建朴素贝叶斯分类器的步骤如下:

1、根据训练样例分别计算每个类别出现的概率P(Ai),

2、对每个特征属性计算所有划分的条件概率P(Bi|Ai),

3、对每个类别计算P(B|Ai)*P(Ai),

4、选择3步骤中数值最大项作为B的类别Ak。

在实际编码中,并没有计算各个概率,而是构建了各个属性在各个类别中出现的频次数,根据目标特征计算相应的概率,这样的好处是容易存储和读取,便于使用,具体代码如下:

def bayesian(inX,tranSet,labels):'''贝叶斯分类器:param tranSet:特征矩阵:param labels: 类别:return:'''labelsTree = {}m,n = tranSet.shapelabelsCount = {}xCount = zeros((n,1))for i in arange(m):if labels[i] not in labelsTree:labelsTree[labels[i]] = {}labelsCount[labels[i]] = {}for j in arange(n):if j not in labelsTree[labels[i]]:labelsTree[labels[i]][j] = {}#labelsTree[labels[i]][tranSet[i][j]] = labelsTree[labels[i]][tranSet[i][j]].get(labels[i][tranSet[i][j]],0) + 1labelsTree[labels[i]][j][tranSet[i,j]] = labelsTree[labels[i]][j].get(tranSet[i,j],0) + 1labelsCount[labels[i]][j] = labelsCount[labels[i]].get(j,0) + 1if inX[j] == tranSet[i,j]:xCount[j] = xCount[j] + 1pVector = {}xProp = (xCount/sum(xCount)).cumprod()[-1]for key in labelsTree.keys():for i in arange(n):pVector[key] = pVector.get(key,1) * labelsTree[key][i].get(inX[i],1)/labelsCount[key].get(i,1)pVector[key] = pVector[key] *  sum(array([x for x in labelsCount[key].values()]))/mreturn pVector,array([x for x in pVector.values()],dtype = 'float')/xProp

测试代码如下:

from numpy import *
import mldata = [['<=30','high','no','fair'],['<=30','high','no','excellent'],['31...40','high','no','fair'],['>40','medium','no','fair'],['>40','low','yes','fair'],['>40','low','yes','excellent'],['31...40','low','yes','excellent'],['<=30','medium','no','fair'],['<=30','low','yes','fair'],['>40','medium','yes','fair'],['<=30','medium','yes','excellent'],['31...40','medium','no','excellent'],['31...40','high','yes','fair'],['>40','medium','no','excellent']]
label = ['no','no','yes','yes','yes','no','yes','no','yes','yes','yes','yes','yes','no']
inX = ['<=30','medium','yes','fair']
pV = ml.bayesian(array(inX),array(data),array(label))
print(pV)

转载于:https://blog.51cto.com/janwool/1895088

分类算法——朴素贝叶斯分类相关推荐

  1. 贝叶斯算法 — 朴素贝叶斯分类器— 过滤垃圾邮件 — 流失用户 — 用户画像

    目录 应用 1. 胃疼胃癌 2. 过滤垃圾邮件 朴素贝叶斯分类器 概念介绍 朴素贝叶斯分类器原理 贝叶斯分类器的应用 公式 求得是后验概率,等式右侧为先验概率 贝叶斯定理本质:通过 先验概率 求 后验 ...

  2. 基于python的贝叶斯分类算法_分类算法-朴素贝叶斯

    朴素贝叶斯分类器(Naive Bayes Classifier, NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比 ...

  3. python人工智能——机器学习——分类算法-朴素贝叶斯算法

    1.概率基础 2.朴素贝叶斯介绍 概率基础 概率定义为一件事情发生的可能性 联合概率和条件概率 朴素贝叶斯-贝叶斯公式 拉普拉斯平滑 如果词频列表里面有很多出现次数都为0,则会导致计算结果为0. sk ...

  4. 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类

    基于概率论的分类方法:朴素贝叶斯分类 Naive Bayesian classification 这大节内容源于带你理解朴素贝叶斯分类算法,并非源于<机器学习实战>.个人认为<机器学 ...

  5. 机器学习监督学习之分类算法---朴素贝叶斯代码实践

    目录 1. 言论过滤器 1.1 项目描述 1.2 朴素贝叶斯 工作原理: 1.2.1 词条向量 1.3 开发流程: 1.4 代码实现 1.4.1 创建样本 1.4.2 构建词汇表,用于建立词集向量 1 ...

  6. 机器学习监督学习之分类算法---朴素贝叶斯理论知识

    感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 朴素贝叶斯理论 1.1 贝叶斯理论 1.1.1 相关计算公式:条件概率公式,贝叶斯 ...

  7. 文本分类(朴素贝叶斯分类)介绍

    文章目录 1 文本分类 2 文本数据处理 3 文本数据准备 4 朴素贝叶斯分类建模 1 文本分类 文本分类是现代机器学习应用中的一大模块,更是自然语言处理的基础之一. 文本分类现广泛应用于各个行业领域 ...

  8. 机器学习经典算法——朴素贝叶斯分类算法

    目录 简介 基本概念 贝叶斯定理 贝叶斯公式的本质内涵 代码 托马斯·贝叶斯 简介 朴素贝叶斯分类算法作为机器学习最经典的算法之一,该算法是一种有监督学习算法.其理论基础是"贝叶斯定理&qu ...

  9. 分类:朴素贝叶斯分类方法

    在很多的应用中,属性集与类别之间的关系是不确定的,换句话说,尽管测试样本的属性值与训练样本相同,但是也不一定能正确的预测其类别,其中一个原因是噪声的存在,另一个原因是某些影响分类的属性并没有出现在属性 ...

最新文章

  1. (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】
  2. Struts2防止表单重复提交
  3. 如何用最简单的方式理解傅立叶变换?
  4. eclipse maven jetty插件方式启动项目
  5. sql语句 int(11)含义误区
  6. 最接近WeChat的全屏自定义相机(Custom Camera)
  7. centos7.9使用jenkins部署springcloud微服务_配合SVN_脚本_实现自动部署后端以及前端程序_亲测成功---持续集成部署Jenkins工作笔记0023
  8. KMP算法 --- 深入理解next数组
  9. [BuildRelease]Mozilla Build Tools - Autoconf + GNU Make
  10. nodejs通过later实现定时执行任务
  11. Turtlebot2激光雷达(Rplidar)gmapping构建地图
  12. dotnet OpenXML PPT 动画框架入门
  13. VScode输入英文感叹号!没有提示模板!!
  14. 可任意改变背景颜色的万年历
  15. 全国省市县名称以及区号邮编大全
  16. Python的Code对象
  17. Premiere Pro CS4\CS5\CS6\CC2015\CC2017\CC2018\CC2019软件安装教程
  18. NLG评估指标chrF、chrF++介绍
  19. 算法题:一个圆环上有100个灯泡,灯泡有打开和关闭两种状态,灯泡的状态随机,按一个灯泡的开关,相邻的两个灯泡的状态也发生一次变化。比如暗-亮-暗,按中间灯泡,变化为亮-暗-亮。问设计一道算法,使得所有
  20. Day01.HTML5

热门文章

  1. python小游戏源码-python21点小游戏源码免费下载
  2. python主要运用于-python主要应用领域有哪些?看这一篇就够了
  3. python编写一个软件-如何用Python写一个计算器软件 附带效果图
  4. python怎么读文件名-python读取文件名并改名字的实例
  5. python编程入门经典实例-Python入门经典实例
  6. 在NVIDIA Jetson Xavier NX上安装llvmlite报错:No such file or directory: ‘llvm-config‘: ‘llvm-config‘
  7. Graves of the Internet - 互联网坟墓
  8. bzoj2333 [SCOI2011]棘手的操作(洛谷3273)
  9. springmvc学习(小知识点整理)
  10. 针对测试行业,新人的一些建议:我适合做测试吗?