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

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

朴素贝叶斯法(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.lryc.cn/news/361683.html

相关文章:

  • spark3.0.1版本查询Hbase数据库例子
  • android高效读图方式——Hardwarebuffer读图
  • 悉数六大设计原则
  • hdfs复习
  • css-Ant-Menu 导航菜单更改为左侧列表行选中
  • 02-CSS3基本样式
  • USART串口外设
  • 大模型应用之基于Langchain的测试用例生成
  • C++之map
  • 【量算分析工具-方位角】GeoServer改造Springboot番外系列六
  • 【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索
  • 上传图片并显示#Vue3#后端接口数据
  • 音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析
  • Qt学习记录(15)数据库
  • c++常用设计模式
  • 【动手学深度学习】softmax回归从零开始实现的研究详情
  • MySQL:MySQL执行一条SQL查询语句的执行过程
  • 解决Python导入第三方模块报错“TypeError: the first argument must be callable”
  • 在python中连接了数据库后想要在python中通过图形化界面显示数据库的查询结果,请问怎么实现比较好? /ttk库的treeview的使用
  • OZON的选品工具,OZON选品工具推荐
  • 营销方案撰写秘籍:包含内容全解析,让你的方案脱颖而出
  • 如何制作一本温馨的电子相册呢?
  • 485通讯网关
  • Anaconda中的常用科学计算工具
  • Java 中BigDecimal传到前端后精度丢失问题
  • 在Linux/Ubuntu/Debian上安装TensorFlow 2.14.0
  • 多语言for循环遍历总结
  • python API自动化(Jsonpath断言、接口关联及加密处理)
  • C++入门5——C/C++动态内存管理(new与delete)
  • leetcode 743.网络延时时间