朴素贝叶斯算法

news2024/11/27 8:29:11

文章目录

  • 1. 贝叶斯定理
  • 2. 朴素贝叶斯
    • 2.1 朴素贝叶斯原理
    • 2.2 朴素贝叶斯适用范围
    • 2.3 朴素贝叶斯常用模型
  • 3. 朴素贝叶斯算法的特点
  • 4. 朴素贝叶斯的Python应用
  • 5. 源码仓库地址

1. 贝叶斯定理

先验概率:即基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。

后验概率:则是从条件概率而来,由因推果,是基于当下发生了事件之后计算的概率,依赖于当前发生的条件。

条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B)。

在这里插入图片描述

贝叶斯公式:贝叶斯公式便是基于条件概率,通过P(B|A)来求P(A|B),如下:

在这里插入图片描述

将A看成“规律”,B看成“现象”,那么贝叶斯公式可以看成:

在这里插入图片描述

全概率公式:表示若事件A1,A2,…,An构成一个完备事件组且都有正概率,则对任意一个事件B都有公式成立:

在这里插入图片描述

将全概率公式带入贝叶斯公式中,得到:

在这里插入图片描述

2. 朴素贝叶斯

2.1 朴素贝叶斯原理

特征条件假设:假设每个特征之间没有联系,给定训练数据集,其中每个样本x都包括n维特征,即x = (x1,x2,…,xn),类标记集合含有k种类别,即y = (y1,y2,…,yk)。

对于给定的新样本x,判断其属于哪个标记的类别,根据贝叶斯定理,可以得到x属于yk类别的概率P(yk|x):

在这里插入图片描述

最大的类别记为预测类别,即:在这里插入图片描述

朴素贝叶斯算法对条件概率分布作出了独立性的假设,通俗地讲就是说假设各个维度的特征x1,x2,…,xn互相独立,在这个假设的前提上,条件概率可以转化为:

在这里插入图片描述

代入上面贝叶斯公式中,得到:

在这里插入图片描述

于是,朴素贝叶斯分类器可表示为:

在这里插入图片描述

因为对所有的yk,上式中的分母的值都是一样的,所以可以忽略分母部分,朴素贝叶斯分类器最终表示为:

在这里插入图片描述

2.2 朴素贝叶斯适用范围

朴素贝叶斯只适用于特征之间是条件独立的情况下,否则分类效果不好,这里的朴素指的就是条件独立。

朴素贝叶斯主要被广泛地使用在文档分类中。

2.3 朴素贝叶斯常用模型

朴素贝叶斯常用的模型如下:
(1)高斯模型:处理特征是连续型变量的情况。
(2)多项式模型:最常见,要求特征是离散数据。
(3)伯努利模型:要求特征是离散的,且为布尔类型,即true和false,或者1和0。

3. 朴素贝叶斯算法的特点

优点:
1、朴素贝叶斯模型有稳定的分类效率。
2、对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3、对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:
1、需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
2、对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。

4. 朴素贝叶斯的Python应用

在sklearn库中提供了GaussianNB、MultinomialNB和BernoulliNB 3种朴素贝叶斯模型,下面以GaussianNB为例。

测试代码如下:

# 导入包
from sklearn.naive_bayes import GaussianNB  # 高斯分布,假定特征服从正态分布的
from sklearn.model_selection import train_test_split # 数据集划分
from sklearn.metrics import accuracy_score

# 导入数据集
from sklearn import datasets
iris = datasets.load_iris()

# 拆分数据集,random_state:随机数种子
train_x,test_x,train_y,test_y = train_test_split(iris.data,iris.target,random_state=12) 

# 建模
gnb_clf = GaussianNB()
gnb_clf.fit(train_x,train_y)

# 对测试集进行预测
# predict():直接给出预测的类别
# predict_proba():输出的是每个样本属于某种类别的概率
predict_class = gnb_clf.predict(test_x)
# predict_class_proba = gnb_clf.predict_proba(test_x)
print("测试集准确率为:",accuracy_score(test_y,predict_class))

输出结果如下:

测试集准确率为: 0.9736842105263158

5. 源码仓库地址

🌼 图像处理、机器学习的常用算法汇总

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【事故致因】HFACS(人因分析与分类系统)

HFACS(人因分析与分类系统) 1 来源2 拟解决的问题(背景)2 基本架构2.1 Unsafe Acts2.1.1 Errors2.1.1.1 Skill-based errors2.1.1.2 Decision errors2.2.1.3 Perceptual errors 2.1.2 Violations2.1.2.1 Routine violations2.1.2.…

数学建模竞赛国赛入场券之攻略

数学建模竞赛国赛入场券之攻略 1.团队契合度 在3天的准备时间中,如果是临时组建的草台班子光处理分歧可能就已经耗掉一半时间,最好在赛前就完成磨合,像一起做模拟题练练手之类,甲准备图论、乙准备优化方法,然后再一块…

linux 内存管理之五bootmem 分配器 2.4.22

内核的bootmem 分配器 又叫自举内存分配器,其内涵即 自己初始化自己的一个内存分配器 其初始化过程 已在 上篇[ARM 架构物理内存初始化],(https://blog.csdn.net/zsj1126/article/details/116430903)介绍 本文主要关注该分配器提供的主要接口和用途 st…

系统测试工程师的岗位职责描述(合集)

系统测试工程师的岗位职责描述1 职责: 1、评审产品或项目需求的测试性,评审产品或项目开发设计的合理性。 2、根据需求进行测试规划,制定测试方案,设计测试用例; 组织测试用例评审; 3、根据测试计划进行项目测试进度和测试质量的管…

Cesium 实战 - 自定义视频标签展示视频

Cesium 实战 - 自定义视频标签展示视频 视频材质核心代码气泡框视频核心代码在线示例 在封装 Cesium 工具的时候,偶然发现 Cesium 支持视频材质功能,虽然目前项目中还没有用到,但是提前做了功能封装,以后使用的时候会方便一些。 …

强化学习从基础到进阶-常见问题和面试必知必答[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

Triton教程---模型设置

Triton教程—模型设置 这是您第一次编写配置文件吗? 查看本指南或本示例! 文章目录 Triton教程---模型设置最小模型配置名称、平台和后端模型交互策略解耦 最大批量大小输入和输出PyTorch 后端的特殊约定命名约定:张量字典作为输入&#xf…

用CSS3实现边框流动,让你的网页更有创意和个性

前言 边框流动动画是一种非常常见的效果,能够让网页看起来更加生动有趣。通过使用 CSS3,我们可以轻松地实现这种动画效果。本文将介绍如何使用 CSS3 实现边框流动效果,下面一起来看看吧。 实现效果 实现思路 首先我们先创建一个盒子容器&…

ENVI软件的地表温度(LST)反演教程

前言 遥感图像处理平台(The Environment for Visualizing Images)的软件处理技术覆盖图像数据的输入/输出、图像定标、图像增强、纠正、正射校正、镶嵌、数据融合以及各种变换、信息提取、图像分类、基于知识的决策树分类、与GIS的整合、DEM及地形信息提…

【FPGA入门】第四篇、有限状态机

目录 第一部分、一个关于有限状态机的例子 第二部分、学会有限状态机的准备知识 1、什么是有限状态机? 2、为什么需要状态机? 3、什么是竞争冒险? 3.1、什么情况下会发生竞争冒险? 3.2、为什么组合逻辑电路会产生竞争和冒险…

HBase入门(一)

第1章 HBase简介 1.1 HBase定义 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 1.2 HBase数据模型 逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(…

【C语言复习】第四篇、有关C语言数据类型的知识

目录 第一部分、前言 第二部分、初识数据类型 1、C语言为啥要这么多的数据类型? 2、表格中所占内存的大小是如何计算得到的? 2.1、计算机的内数据存储单位 2.2、关键字sizeof的使用说明(具体后面会更详细的解释) 3、为什么…

【Python 随练】求最大公约数和最小公倍数

题目: 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 简介: 在本篇博客中,我们将解决一个常见的数学问题:求两个正整数的最大公约数和最小公倍数。我们将提供问题的解析,并给出一个完整的代码示例…

【新星计划Linux】——Linux介绍与了解Linux与Windows系统区别

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.Linux系统 1.Linux系统与Windows系统的区别 (1)性…

【JavaScript】ES6新特性(4)

14. Proxy 代理 Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理 它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作 14.1 Object.d…

2023年DAMA-CDGA/CDGP数据治理工程师认证这里报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

追梅西的少年

* * * 原创:刘教链 * * * 号外:今天在“刘教链Pro”发表了头条《鼠头和鸭脖——中心化验真的困境》,以及次条《内参:美SEC执法主管表示,DeFi是纯粹的欺诈!??》,欢迎关注…

云安全技术(六)之云架构模型

云架构模型 1.1 舍伍德业务应用安全架构(SABSA) 舍伍德业务应用安全架构(Sherwood Applied Business Security Architecture,SABSA)的官方网站是 。SABSA提供了一组组件,这些组件可部分或全部用作任何系统的安全架构方www.sabsa.org法。如下&#xff1a…

【Flutter】Flutter中如何获取子类Widget并调用它的方法

文章目录 一、前言二、理解 Flutter 中的 Widget三、如何在 Flutter 中获取子类 Widget1. 使用 GlobalKey2. 使用 context.findAncestorWidgetOfExactType 四、如何调用子类 Widget 的方法五、如何在 Flutter 中传递数据六、总结 一、前言 如果你想深入学习 Flutter&#xff0…

如何打造优秀Web3产品

近日,我们采访了Mysten Labs的联合创始人兼首席执行官Evan Cheng,探讨了Web3技术对消费者的价值、Web3行业应该如何更好地自我诠释,以及它对产品开发的影响。 您曾谈到Web3作为一种所有权实验,这种新技术可能会改变消费者的行为。…