当前位置: 首页 > news >正文

一文讲明白朴素贝叶斯算法及其计算公式(入门普及)

1、贝叶斯算法

贝叶斯定理由英国数学家托马斯·贝叶斯 ( Thomas Bayes) 提出的,用来描述两个条件概率之间的关系。通常,事件A在事件B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定的相关性,并具有以下公式,称之为贝叶斯公式:

对于一般的机器学习算法学习者而言,大家看到这种公式基本上都是在努力回忆那些学过的数学知识,总有一种似曾相识的感觉,但却不能准确理解,为此首先进行复习和回归数学中的那些个事情。

 ☀什么是条件概率?

条件概率就像是在一个已经有了某种“前提情况”下,去看另一件事情发生的可能性。比如说,你想知道在“今天是下雨天”这个前提条件下,“路上堵车”的概率。“今天是下雨天”就是那个已经发生的事件B,“路上堵车” 就是事件A,我们想求的就是P(A|B)。

☀如何理解2个事件存在一定的相关性?

当我们考虑两个条件概率P(A|B)P(B|A)时,它们之间的相关性源于事件A和B本身的内在联系。例如,假设事件A是“一个人患有流感”,事件B是“一个人发烧”。 

P(A|B)表示在一个人发烧的情况下,他患有流感的概率。而P(B|A)表示在一个人患有流感的情况下,他发烧的概率。很明显,这两个概率是相关的,因为流感和发烧这两个事件是紧密联系在一起的。如果一个人更容易在患流感的时候发烧,那么P(B|A)的值就会比较高;反过来,发烧是患流感的一个常见症状,那么在看到一个人发烧时,他患流感的概率P(A|B)也会受到P(B|A)的影响。

条件概率是“贝叶斯公式”的关键所在,它也被称为“似然概率”, 一般是通过历史数据统计得到.贝叶斯公式可以预测事件发生的概率,两个本来相互独立的事件A和B,发生了某种“相关性”,此时就可以通过“贝叶斯公式”实现预测。

2、朴素贝叶斯算法实现 

贝叶斯分类法是个厉害的统计学分类“神器”,它的基础就是贝叶斯定理,在机器学习领域比较受欢迎。简单来说,它主要用于预测一个“物品”属于某一类的可能性有多大,然后根据这个概率来给“物品”分类。

为啥说它是“朴素贝叶斯”呢?因为假定世间万物的各种特征都是自己管自己,互相之间不干扰,就好像每个特征都活在自己的“小世界”里,谁也影响不了谁。比如说判断一个水果是不是苹果,它的颜色、形状、大小这些特征,在朴素贝叶斯看来,彼此没有牵连。

这种“各扫门前雪”的假定,在专业上就叫类条件独立。也就是说,当我们判断某个属性值对确定一个物品属于哪一类有什么影响的时候,朴素贝叶斯觉得这个影响和其他属性值一点关系都没有,就只看这一个属性自己的“表现”,然后依据这个,再结合贝叶斯定理算出概率,完成分类任务。 

朴素贝叶斯分类,或简单贝叶斯分类的工作过程如下: 
(1)假设有样本数据集D={X1, X2,…,Xn}, 属性变量集为A={A1, A2, A3,…,Ad},每个数据样本用一个d维的特征向量X={x1, x2, x3,…,xd}表示,类变量为Y有m个类别,记为Y={y1, y2,y 3,…,ym}。

(2)Y的先验概率表示为Pprior=P(Y)。 预测样本X的类别,就是求在已知X的条件下,类别是Y的概率,即后验概率,表示为Ppost=P(Y|X)。

☀先验概率,也就是 P_prior指什么?

想象一下我们有一堆水果,里面分成了苹果、香蕉、橙子这些类别。那先验概率P(Y),就是在我们还没去仔细看每个水果具体长什么样(也就是没考虑具体的特征情况)的时候,单纯从整体上看,某个类别出现的概率。就好比在一堆水果里,我们只知道有多少个是苹果,有多少个是香蕉,有多少个是橙子,然后算出苹果占总水果个数的比例,这个比例就是苹果这个类别的先验概率,其他类别同理。

☀后验概率,也就是 P_post 等于 P(Y|X)指什么?

现在假如我们拿到了一个水果,这个水果有它自己的一些特点,比如它是红色的、圆圆的、个头挺大,这些特点就是样本X代表的特征。这时候我们想知道这个有这些特点的水果它属于哪个类别,比如它是苹果、还是香蕉或者橙子,那就要去求在已经知道它有这些特点(也就是已知X的条件下),它属于某个类别Y的概率,这个概率就是后验概率P(Y|X)。简单说,就是依据这个水果呈现出来的样子,去倒推它最有可能属于哪个类别所对应的概率大小。  

(3)根据贝叶斯定理 

由于朴素贝叶斯假定各个特征变量之间是相互独立,在给定类别为y的情况下,上式可以进一步表示为下式:

 ①公式符号定义:X是一个维的特征向量,表示为X={x1, x2, x3,…,xd},它代表了一个样本的所有特征。Y是类别变量,y是的一个具体取值,代表某一个类别。∏是连乘符号,就像是求和符号∑一样,这里表示从i=1到i=d的所有项相乘。

②条件概率的理解:P(X|Y=y)是在类别Y为y的条件下,样本具有特征向量X的概率。例如,在判断一封邮件是否是垃圾邮件(Y是邮件类别,y表示垃圾邮件这个类别),X可能是邮件中包含的一些特征,如是否包含特定关键词、发件人地址是否陌生等,P(X|Y=y)就是在邮件是垃圾邮件的情况下,出现这些特征组合的概率。

 由以上两式可以计算出后验概率为:

 P(Y)是先验概率,即在没有考虑样本X的情况下,事件Y发生的概率。

这部分体现了在给定类别Y下,各个特征xi的条件概率的乘积,这通常与朴素贝叶斯分类器相关,假设各个特征之间相互独立。

P(X)是样本X出现的概率。

这个公式用于根据先验概率、特征的条件概率和样本概率来计算后验概率,在分类问题(如文本分类、图像分类等)中有着广泛的应用。例如在垃圾邮件分类中,可以是邮件是否为垃圾邮件的类别,是邮件中的词汇特征等。通过计算后验概率来判断邮件属于垃圾邮件还是正常邮件的可能性。

由此,可以得到一个样本数据属于类别yi的计算公式如下:

 这个公式可由上一个公式得出。

至此,朴素贝叶斯分类的基本公式已讲解完毕,下次将针对贝叶斯分类的应用具体来展开。

相关文章:

一文讲明白朴素贝叶斯算法及其计算公式(入门普及)

1、贝叶斯算法 贝叶斯定理由英国数学家托马斯贝叶斯 ( Thomas Bayes) 提出的,用来描述两个条件概率之间的关系。通常,事件A在事件B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定…...

实际开发中,常见pdf|word|excel等文件的预览和下载

实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…...

Python自学 - 递归函数

1 Python自学 - 递归函数 递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍…...

Spark-Streaming有状态计算

一、上下文 《Spark-Streaming初识》中的NetworkWordCount示例只能统计每个微批下的单词的数量,那么如何才能统计从开始加载数据到当下的所有数量呢?下面我们就来通过官方例子学习下Spark-Streaming有状态计算。 二、官方例子 所属包:org.…...

Markdown如何导出Html文件Markdown文件

Markdown如何导出Html文件Markdown文件 前言语法详解小结其他文章快来试试吧☺️ Markdown 导出 HTML 👈点击这里也可查看 前言 Markdown的源文件以md为后缀。Markdown是HTML语法的简化版本,它本身不带有任何样式信息。我们所看到的Markdown网页(如&…...

使用Python进行图像裁剪和直方图分析

一、简介 在数字图像处理领域,裁剪和分析图像的直方图是两个非常基本且重要的操作。本文将通过一个简单的Python项目,展示如何使用skimage和matplotlib库来裁剪图像并分析其RGB通道的直方图。 二、环境准备 在开始之前,请确保你已经安装了以…...

企业内管信息化系统

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...

【python因果库实战15】因果生存分析4

这里写目录标题 加权标准化生存分析总结个体层面的生存曲线 加权标准化生存分析 我们还可以将加权与标准化结合起来,使用 WeightedStandardizedSurvival 模块。在这里,我们将逆倾向得分加权模型(根据基线协变量重新加权人群)与加…...

Linux 线程详解

目录 一、线程概述 二、线程创建 三、线程终止 四、线程回收 五、线程取消 六、线程分离 七、线程安全 一、线程概述 线程是进程内的一个执行单元,是进程内可调度的实体。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空…...

云架构:考量与框架

云架构:考量与框架 引言 在当今的数字化环境中,云计算已成为现代商业运营的基石。一个设计良好的云架构框架为可扩展、安全和弹性的系统奠定了基础。本文将深入探讨云架构的核心要素,讨论重要的考量因素、设计指南,以及最佳实践…...

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念,所以直接整理可能用到的东西。 sd简单的说…...

java 发送邮件

前期准备 pom文件中引入 JavaMail API 和 JavaBean Activation FrameWork,得到两个jar包:mail.jar 和 activation.jar 发送简单邮件(只有邮件正文,普通文本) package com.zbttest.email;import com.sun.mail.util.Ma…...

聚类系列 (二)——HDBSCAN算法详解

在进行组会汇报的时候,为了引出本研究动机(论文尚未发表,暂不介绍),需要对DBSCAN、OPTICS、和HDBSCAN算法等进行详细介绍。在查询相关资料的时候,发现网络上对于DBSCAN算法的介绍非常多与细致,但…...

AngularJS HTML DOM

关于《AngularJS HTML DOM》的文章,我找到了一些有用的信息。这篇文章主要介绍了AngularJS如何通过特定的指令与HTML DOM元素进行交互。以下是一些关键点: ng-disabled 指令:这个指令用于将应用程序数据绑定到HTML的disabled属性。例如&#…...

C语言延时实现

C语言延时实现 在C语言中,delay 函数通过空循环实现延时,而不是像其他高级语言(如Python)直接使用 sleep 函数。这种实现方式是基于单片机的特性和C语言的底层操作。下面详细解释为什么这种空循环可以实现延时,以及它…...

OSI模型的网络层中产生拥塞的主要原因?

( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…...

机器学习周报-ModernTCN文献阅读

文章目录 摘要Abstract 0 提升有效感受野(ERF)1 相关知识1.1 标准卷积1.2 深度分离卷积(Depthwise Convolution,DWConv)1.3 逐点卷积(Pointwise Convolution,PWConv)1.4 组卷积(Grou…...

什么是网关路由

1.认识网关 网关(Gateway)和路由(Router)是两个相关但不同的概念。 一、网关(Gateway) 定义 网关是一个网络节点,它充当了不同网络之间的连接点。可以将其看作是一个网络的 “大门”&#xf…...

信号的产生、处理

一、信号的概念 信号是linux系统提供的一种,向指定进程发送特定事件的方式。收到信号的进程,要对信号做识别和处理。信号的产生是异步的,进程在工作过程中随时可能收到信号。 信号的种类分为以下这么多种(用指令kill -l查看&…...

在Linux中,zabbix如何监控脑裂?

在Linux中,zabbix监控脑裂主要涉及对高可用(HA)系统中可能发生的节点间通信中断或不一致状态的监控。脑裂问题通常发生在具有冗余节点的高可用系统中,如集群、HA系统或分布式数据库系统,当节点之间失去通信时&#xff…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

Python Einops库:深度学习中的张量操作革命

Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...