机器学习算法理论:贝叶斯

        贝叶斯定理对于机器学习来说是经典的概率模型之一,它基于先验信息和数据观测来得到目标变量的后验分布。具体来说,条件概率(也称为后验概率)描述的是事件A在另一个事件B已经发生的条件下的发生概率,公式表示为P(A|B),读作“在B条件下A的概率”。

最常用的贝叶斯机器学习模型

  • 朴素贝叶斯模型:这是一个基于贝叶斯定理的分类算法,其核心思想是:对于给定的输入特征,假设每个特征之间都是独立的。尽管这个假设在实际应用中可能不成立,但朴素贝叶斯模型在许多场景下都表现出了很好的性能。

  • 贝叶斯网络模型:这是一个用于表示变量之间复杂关系的概率图模型。贝叶斯网络可以用于推断、学习和推理,广泛应用于各种机器学习任务中。

基本原理

公式:

eq?P%28A%7CB%29%20%3D%20%5Cfrac%7BP%28B%7CA%29%5Ccdot%20P%28A%29%7D%7BP%28B%29%7D

 其中:

  • eq?P%28A%7CB%29:表示在B发生的情况下,A发生的概率,即得自B的取值而被称作A的后验概率
  • eq?P%28B%7CA%29:表示在A发生的情况下,B发生的概率,即得自A的取值而被称作B的后验概率
  • eq?P%28A%29:表示A发生的概率,也称A的先验概率
  • eq?P%28B%29:表示B发生的概率,也称B的先验概率

例1

        现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,那么从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少?

 首先我们先定义事件:

  • A:为选中A容器  
  • B:为抽出红球

已知:

  • eq?P%28B%29:抽中红球的概率为8/20
  • eq?P%28A%29:选中A容器的概率1/2
  • eq?P%28B%7CA%29:在A容器内抽中红球的概率为7/10

求:从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少?

套入公式:

20%7D%3D%200.875

解得: 从这两个容器里任意抽出了一个红球,这个球来自容器 A 的概率87.5%

 

例2

        假设新冠状病毒测试,用于检测是否感染了新冠状病毒。这个测试不是100%准确,会有假阳性和假阴性的情况。那么,测试结果为阳性的概率(阳性率)是98%,测试结果为阴性的概率(阴性率)是95%,实际感染新冠状病毒的人的概率(患病率)是1%,现在,有一个人的测试结果为阳性,根据以上信息判断这个人是否真的感染了新冠状病毒。

阳性率阴性率患病率
98%95%1%

首先我们先定义事件:

  • eq?A:测试结果为阳性
  • eq?B:实际感染了病毒
  • eq?B_1:未感染病毒

根据以上信息已知:

  • eq?P%28A%7CB%29:在实际感染病毒患病的情况下,测试结果为阳性的概率,即真阳性率。这个值是98%
  • eq?P%28A%7CB_1%29:在未感染病毒患病的情况下,测试结果为阳性的概率,即假阳性率。这个值是2%(100%-98%)
  • eq?P%28B%29:实际感染病毒患病率为1%
  • eq?P%28B_1%29:实际未感染新冠状病毒的概率,即99%
  • eq?P%28A%29:测试为阳性的总概率

使用全概率公式计算eq?P%28A%29

eq?P%28A%29%3D%5Csum%20P%28A%7CB_i%29P%28B_i%29%3DP%28A%7CB%29P%28B%29+P%28A%7CB_1%29P%28B_1%29

eq?%3D0.98%5Ctimes%200.01+0.99%5Ctimes%200.02%3D0.0296

其中,eq?P%28A%29表示事件A发生的概率,eq?%5Csum表示对所有可能的状态eq?B_i求和,eq?P%28B_i%29表示状态eq?B_i的概率,eq?P%28A%7CB_i%29表示在状态eq?B_i下事件eq?A发生的概率。

代入贝叶斯公式计算eq?P%28B%7CA%29

即测试结果为阳性,是否真的感染了新冠状病毒的概率

%200.0296%20%5Capprox%200.3333

解得: 测试结果为阳性,确认感染了新冠状病毒的概率约为33%。

 

朴素贝叶斯 

        朴素贝叶斯是一种基于贝叶斯定理的分类算法,它假设特征之间相互独立。朴素贝叶斯在文本分类、垃圾邮件过滤、情感分析等领域有广泛应用。朴素贝叶斯的基本原理是:对于给定的训练数据集,计算每个类别的概率,然后根据输入的特征计算属于每个类别的概率,最后选择概率最大的类别作为预测结果。

示例

使用sklearn库的朴素贝叶斯分类器

from sklearn.datasets import fetch_openml  # 导入fetch_openml函数,用于加载Fashion MNIST数据集
from sklearn.model_selection import train_test_split  # 导入train_test_split函数,用于将数据集划分为训练集和测试集
from sklearn.naive_bayes import GaussianNB  # 导入GaussianNB类,用于创建朴素贝叶斯分类器
from sklearn.metrics import accuracy_score  # 导入accuracy_score函数,用于计算预测准确率# 加载Fashion MNIST数据集
fashion_mnist = fetch_openml('fashion_mnist', version=1)
X = fashion_mnist.data  # 获取数据集的特征
y = fashion_mnist.target  # 获取数据集的标签# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建朴素贝叶斯分类器
gnb = GaussianNB()# 训练模型
gnb.fit(X_train, y_train)# 预测测试集结果
y_pred = gnb.predict(X_test)# 输出预测准确率
print("朴素贝叶斯分类器预测准确率:", accuracy_score(y_test, y_pred))

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue-23、Vue收集表单数据

1、效果 2、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>收集表单数据</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js…

10个常考的前端手写题,你全都会吗?

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

VUE--组件通信(非父子)

一、非父子通信 --- event bus 事件总线 作用&#xff1a;非父子组件之间进行简易的消息传递 步骤&#xff1a; 1、创建一个都能访问到的事件总线&#xff08;空vue实例&#xff09;--- utils/EventBus.js import Vue from vue export default new Vue({}) 2、 接收方&…

Golang个人web框架开发-学习流程

Golang-个人web框架 github仓库创建github仓库 web框架学习开发周期第一阶段--了解第一阶段思考小结 第二阶段第三阶段 github仓库 github地址&#xff1a;ameamezhou/golang-web-frame 后续还将继续学习更新 创建github仓库 设置免密登录 ssh-keygen 一路回车就OK 上面有告…

flutter使用get依赖实现全局loading效果,弹窗loading状态

get dialog的官网文档&#xff1a;GetDialogRoute class - dialog_route library - Dart API 可以使用Get.dialog()方法来创建一个自定义的加载弹窗&#xff0c;get框架是支持自定义弹窗效果的&#xff0c;所以我们就使用这个方式来自定义一个弹窗效果&#xff0c;并且点击遮罩…

Ubuntu使用QtCreator + CMake 开发C/C++程序

平台 OS: Ubuntu 20.04 cmake: 3.16.3 IDE: Qt Creator 4.11.1 Based on Qt 5.14.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit) Built on Feb 5 2020 12:48:30 From revision b2ddeacfb5 Copyright 2008-2019 The Qt Company Ltd. All rights reserved. The program …

运维工具之iptables命令

运维工具之iptables命令 1.iptables防火墙介绍 ​ iptables其实并不是真正的防火墙&#xff0c;我们可以理解成一个客户端代理&#xff0c;用户通过 IPTables这个代理&#xff0c;将用户的安全设定执行到对应的"安全框架"中&#xff0c;这个"安全框架"才…

【C++】string的基本使用

从这篇博客开始&#xff0c;我们的C部分就进入到了STL&#xff0c;STL的出现可以说是C发展历史上非常关键的一步&#xff0c;自此C和C语言有了较为明显的差别。那么什么是STL呢&#xff1f; 后来不断的演化&#xff0c;发展成了知名的两个版本&#xff0c;一个叫做P.J.版本&am…

c语言案例双色球

系列文章目录 c语言案例双色球 c语言案例双色球 系列文章目录c语言案例双色球 c语言案例双色球 int main() {srand((unsigned int)time(NULL));//双色球两种原色 红球蓝球&#xff08;61&#xff09;红球1-33 蓝球1-16 打印双色球中奖信息//红色球不能重复 int ball[6];//红球f…

为什么 macOS 比 Windows 稳定?

在计算机操作系统领域&#xff0c;macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体&#xff0c;但在稳定性和用户体验方面&#xff0c;macOS 常常被认为优于 Windows。那么&#xff0c;为什么 macOS 比 Windows 更稳定呢&#xff1f; 我们…

HTML前端CSS实现只显示1行或者2行、3行剩余显示省略号

想要做的效果: 文本只一行显示 /**实现思路&#xff1a;1.设置inline-block属相2.强制不换行3.固定高度4.隐藏超出部分5.显示“……”*/ {display: inline-block;white-space: nowrap; width: 100%; overflow: hidden;text-overflow:ellipsis; }文本只多行显示 /** 实现思路&…

【Debian】非图形界面Debian10.0.0安装xfce和lxde桌面

一、安装 1. Debian10.0.0安装xfce桌面 sudo apt update sudo apt install xfce4 startxfce4 2. Debian10.0.0安装lxde桌面 sudo apt-get install lxde安装后重启电脑。 二、说明 XFCE、LXDE 和 GNOME 是三个流行的桌面环境&#xff0c;它们都是为类 Unix 操作系统设计…