NBM 算法【python,算法,机器学习】

devtools/2024/10/15 5:46:59/

朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。

贝叶斯定理

P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)=\frac{P(B|A) * P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
其中A表示分类,B表示属性,因此此公式更通俗的表述如下:
P ( 分类 ∣ 属性 ) = P ( 属性 ∣ 分类 ) ∗ P ( 分类 ) P ( 属性 ) P(分类|属性)=\frac{P(属性|分类) * P(分类)}{P(属性)} P(分类属性)=P(属性)P(属性分类)P(分类)
即在已知属性B的前提下,分类为A的概率等于似然率(已知分类中属性B的概率)乘以先验概率(分类A的概率)除以证据概率(属性B的概率)。

优点

  1. 对于大量数据的预测靠谱。
  2. 计算简便。

缺点

  1. 属性之间必须独立。
  2. 选取没有相互干涉的属性是难点。

举例:在夏季,某公园男性穿凉鞋的概率为 1/2 ,女性穿凉鞋的概率为 2/3 ,
并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,
请问他的性别为男性或女性的概率分别为多少?

P(男|穿凉鞋)=P(穿凉鞋|男)P(男)/P(穿凉鞋)
= 1/2 * 2/3 / (2/3 * 1/2 + 1/3
2/3)
= 1/3 / (1/3+2/9)
= 3/5

P(女|穿凉鞋)=P(穿凉鞋|女)P(女)/P(穿凉鞋)
= 2/3 * 1/3 / (2/3 * 1/2 + 1/3
2/3)
= 2/9 / (1/3+2/9)
= 2/9 * 9/5
= 2/5

所以在公园里,随机遇到一个穿凉鞋的人,性别为女男的概率是 3/5,性别为女的概率为 2/5。

怎样避免0概率问题

使用拉普拉斯修正,修改公式如下:
P ^ ( C = c j ) = N ( c j ) + 1 N + C \hat{P}(C=c_j)=\frac{N(c_j)+1}{N+C} P^(C=cj)=N+CN(cj)+1
上式表示 c j c_j cj分类的概率,其中 C 表示分类数量,N 表示所有的数量。
P ^ ( x i ∣ C = c j ) = N ( x i ∣ C = c j ) + 1 N + X \hat{P}(x_i|C=c_j)=\frac{N(x_i|C=c_j)+1}{N+X} P^(xiC=cj)=N+XN(xiC=cj)+1
上式表示特定 x i x_i xi属性中类 c j c_j cj的概率,其中 X 表示属性数量。

高斯朴素贝叶斯分类器

  1. 高斯分布
    P ( x i ∣ μ , σ ) = 1 ( 2 π σ 2 ) 1 2 ∗ e − ( x i − μ ) 2 2 σ 2 P(x_i|\mu,\sigma)=\frac{1}{(2\pi \sigma^2)^{\frac{1}{2}}} * e^{-\frac{(x_i-\mu)^2}{2\sigma^2}} P(xiμ,σ)=(2πσ2)211e2σ2(xiμ)2
    其中 μ = 1 N ∑ i = 1 N x i \mu=\frac{1}{N}\sum\limits_{i=1}^{N}x_i μ=N1i=1Nxi表示样本的期望, σ 2 = 1 N ∑ i = 1 N ( x i − μ ) 2 \sigma^2=\frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\mu)^2 σ2=N1i=1N(xiμ)2表示样本的方差。
    如果要使用无偏差估计,N 取 N+1。
  2. 如果特征值服从高斯分布,那么根据特征值估计分类概率的公式如下:
    P ^ ( x i ∣ C = c i ) = 1 ( 2 π σ i j 2 ) 1 2 ∗ e − ( x i − μ i j ) 2 2 σ i j 2 \hat{P}(x_i|C=c_i)=\frac{1}{(2\pi \sigma_{ij}^2)^{\frac{1}{2}}} * e^{-\frac{(x_i-\mu{ij})^2}{2\sigma_{ij}^2}} P^(xiC=ci)=(2πσij2)211e2σij2(xiμij)2
    其中 μ i j \mu_{ij} μij表示分类为 c i c_i ci时,属性 x j x_j xj的期望,
    σ i j 2 \sigma_{ij}^2 σij2表示分了为 c i c_i ci时,属性 x j x_j xj的方差。

http://www.ppmy.cn/devtools/44914.html

相关文章

【前端Vue】——课堂笔记(二)

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

如何从异步调用中返回响应

想象一下,你打电话给朋友并让他帮你查一些资料。虽然这可能需要一段时间,但你会在电话里等待,直到朋友给你需要的答案。这就是同步调用的行为: function findItem() {var item;while (item_not_found) {// 查找}return item; }var item = findItem(); // 使用 item doSome…

JavaScript base64 与 File 之间的互转

JavaScript base64 与 File 之间的互转 一、base64 > File 在 JavaScript 中,可以使用 Blob 对象将 base64 字符串转换为 File 对象。 方法一、base64 直接转换为 File 对象: 首先, 需要从 base64 字符串中获取文件类型, 然后将文件类型和 base64…

react antd table表格如何获取当前行id

组件库上都有详细的介绍,有自带的一些属性!

Redis 主从复制

前言 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制的功能,实现了相同数据的多个 Redis 副本。复制功能是⾼可⽤ Redis 的基础&am…

家政预约小程序10公众号集成

目录 1 使用测试号3 工作流配置4 配置关注事件脚本5 注册开放平台6 获取公众号access_token6 实现关注业务逻辑总结 我们本次实战项目构建的相当于一个预约平台,既有家政企业,也有家政服务人员还有用户。不同的人员需要收到不同的消息,比如用…

Kubernetes 之 ReplicaSet

Kubernetes 之 ReplicaSet ReplicaSet 定义 ReplicaSet 是 Kubernetes 中的一种副本控制器,其主要作用是控制其管理的 Pod 的预设副本数量。它会持续监听这些 Pod 的运行状态,在Pod发生故障时执行重启策略,当 Pod 数量减少时会重新启动新的…

牛客NC236 最大差值【simple 动态规划 Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204 思路 不难看出该题可以使用动态规划的方式解题。 在循环数组的过程中,记录截止到当前位置-1的最小值, 然后用当前的值去计算最大的差值。Java代码 im…