MATLAB 实现贝叶斯决策

1. 原理

后验概率:

1.最小错误率决策(最大后验概率决策):

2.最小风险决策:

3.正态分布下的贝叶斯决策

2. 过程

2.1 训练集数据可视化

导入两类训练集数据,并绘制其数据分布,如下:

图1 训练集数据分布

2.2 求取训练集的平均值以及协方差

通过内置mean函数求平均值,cov函数求协方差并设定两类样本先验概率均为0.5

均值及协方差值如下:

图2 均值及协方差

2.3 测试集数据可视化

导入测试集数据并通过find函数分别找出两类数据对应的位置进行绘图

结果如下:

图3 测试集分布

2.4 建立判别函数并通过判别函数对测试集分类

通过以上代码可以将依次将测试集中的样本特征值代入判别函数的公式中进行计算,值大于0的则分为第二类样本(女性)否则为第一类样本(男性),最后将分类结果绘制出结果如下:

图4 测试集分类结果

通过上图可以看出分类结果中有一个样本点出错了

2.5 探究先验概率对错误率的影响

由于以上实验在两类样本先验概率均为0.5的情况下仍然出现了一点错误,于是接下来开始改变先验概率进一步探究它对本实验中分类的情况的影响

将第一类样本先验概率pw1设置为从0到1步长为0.1开始变化,第二类样本先验概率pw2=1-pw1,记录不同pw1下的错误率并绘图,结果如下:

图5 先验概率与错误率间的大致关系

从上图可以发现要想错误率能够达到0,则第一类样本先验概率的值大概要在0.4左右,而在0.4的两边错误率会有增加的趋势,而由于测试集第一类样本个数多于第二类样本个数,于是最大错误率的情况为pw1=0,及所有样本均被判为第二类。

查看pw1=0.4时的分类结果如下:

图6 pw1=0.4的分类结果

分类全部正确。

2.6 通过最小风险的贝叶斯决策进行分类

上述实验使用的是最小错误率贝叶斯决策,以先验概率作为主导,接下来引入损失函数如下:

图7 损失函数

将最小错误率实验中的判别函数改写为最小风险的形式,令先验概率相同

由此时的决策表所对应的分类结果如下:

图8 分类结果1

可以看出其中有一些属于女性样本的数据被错误分类到男性样本中。

接下来改变损失值多次实验,结果如下:

图9 L11=L22=0,L12=3,L21=1

图10 L11=L22=0,L12=1,L21=1

此时可以看出分类结果与图4一致

3. 结果与分析

本文的核心内容时建立最小错误率与最小风险决策分类器中的判别函数。实验中需要建立的是正态分布模式的贝叶斯决策,通过计算出样本的均值和协方差并且代入判别函数从而进行判断。从图4到图6的结果以及公式中可以看出最小错误率的贝叶斯决策中先验概率起很大的作用,所以先验概率起主导作用。而在后续通过最小风险的贝叶斯决策中也可以明显看出损失函数值的改变对结果有较大影响,例如通过分析图8中的结果对应的损失函数值可以得知L21值较大,即实际为男性却判别成了女性所需要的代价较大,由此分类器在做决策时对于两类样本边缘的数据更趋向于决策为男性以此达到最小风险。通过观察图10的结果以及公式可以得知,0-1损失的最小风险决策等价于最小错误率决策。

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

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

相关文章

云时代【5】—— LXC 与 容器

云时代【5】—— LXC 与 容器 三、LXC(一)基本介绍(二)相关 Linux 指令实战:使用 LXC 操作容器 四、Docker(一)删除、安装、配置(二)镜像仓库1. 分类2. 相关指令&#xf…

JavaSE-09(Java IO精华总结)

Java IO 简单做个总结: 1 .InputStream/OutputStream 字节流的抽象类。2 .Reader/Writer 字符流的抽象类。3 .FileInputStream/FileOutputStream 节点流:以字节为单位直接操作“文件”。4 .ByteArrayInputStream/ByteArrayOutputStream 节点流&#xff…

Running job: job_1709516801756_0003

** yarn运行卡在Running job: job_1709516801756_0003问题解决: ** 在运行wordcount时出现错误,一直卡住 运行命令:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output 出现错误&#xff1a…

经典思路!人参叶际微生物如何发8分文章?

中国中医科学院中药研究所在《Environmental Microbiome》期刊上(IF7.9)发表了关于叶际真菌微生态网络的文章,该研究通过对ITS测序结果和环境因子测定结果以及皂苷含量测定结果进行生信分析,提出了维持微生态网络的稳定性策略和影响皂苷含量的因素。 期刊…

H12-821_113

113.如图所示是路由器现ATE输出的部分信息,以下关于这部分信息的描述,错误的是哪一项? A.display pim rp-info命令用来查看组播组对应的RP信息 B.RP地址是2.2.2.2 C.组地址是225.0.0.0 D.RP的优先级是0 答案:C 注释: …

HCIA-Datacom题库(自己整理分类的)_29_PPP协议判断【6道题】

1.数据链路层采用PPP封装链路两端的IP地址可以不在同一个网段。√ 2.PPP链路两端不在同一网段不能通信。 3.参考以下拓扑及配置,路由器R1与R2通过Serial低速线缆连接,且数据链路层封装使用PPP。当R1和R2的Holdtime不一致时,PPP协商失败&…

爬虫实战——麻省理工学院新闻

文章目录 发现宝藏一、 目标二、 浅析三、获取所有模块四、请求处理模块、版面、文章1. 分析切换页面的参数传递2. 获取共有多少页标签并遍历版面3.解析版面并保存版面信息4. 解析文章列表和文章5. 清洗文章6. 保存文章图片 五、完整代码六、效果展示 发现宝藏 前些天发现了一…

MySQL面试题-日志(答案版)

日志 1、为什么需要 undo log? (1)实现事务回滚,保障事务的原子性。 事务处理过程中,如果出现了错误或者用户执 行了 ROLLBACK 语句,MySQL 可以利用 undo log 中的历史数据将数据恢复到事务开始之前的状态…

ssh无法直接登入Linux超级用户root(23/3/3更新)

说明:不允许ssh用超级用户的身份登入是为了安全性,如果只是学习使用对安全性没啥要求可以按以下操作解除限制 以普通用户登录到服务器后,执行以下命令以编辑 SSH 服务器配置文件 /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config 此时会…

【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现

快乐的流畅:个人主页 个人专栏:《C语言》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 一、仿函数1.1 仿函数的介绍1.2 仿函数的优势 二、priority_queue2.1 push2.2 pop2.3 top2.4 size2.5 empty 三、…

【3D Slicer】心脏CT图像分割操作保姆级教程 Cardiac CT image segmentation

心脏CT图像分割操作流程指南 1 安装3D Slicer软件2 打开文件2.1 从File->Add Data->Choose File2.2 直接拖入 3 进行分割操作4 切片填充 Fill between slices5 第二个例子6 数据保存7 打开保存后的文件 1 安装3D Slicer软件 方式二选一 1.官网:3D Slicer 2.百…

无字母数字rce总结(自增、取反、异或、或、临时文件上传)

目录 自增 取反 异或 或 临时文件上传 自增 自 PHP 8.3.0 起,此功能已软弃用 在 PHP 中,可以递增非数字字符串。该字符串必须是字母数字 ASCII 字符串。当到达字母 Z 且递增到下个字母时,将进位到左侧值。例如,$a Z; $a;将…

Java中的Object类详解

Java中的Object类详解 1. equals(Object obj)2. hashCode()3. toString()4.getClass()5.notify() 和 notifyAll()6. wait() 和 wait(long timeout)7. clone()8.finalize() Java中的 Object 类是所有类的父类,可以被所有Java类继承并使用。下面先看下源码&#xff1a…

google最新大语言模型gemma本地化部署

Gemma是google推出的新一代大语言模型,构建目标是本地化、开源、高性能。 与同类大语言模型对比,它不仅对硬件的依赖更小,性能却更高。关键是完全开源,使得对模型在具有行业特性的场景中,有了高度定制的能力。 Gemma模…

面试数据库篇(mysql)- 12分库分表

拆分策略 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 1,冷热数据分离 2,减少IO过渡争…

【Micropython基础】TCP客户端与服务器

文章目录 前言一、连接Wifi1.1 创建STA接口1.2 激活wifi接口1.3 连接WIFI1.4 判断WIFI是否连接1.5 连接WIFI总体代码 二、创建TCP 客户端2.1 创建套接字2.2 设置TCP服务器的ip地址和端口2.3 连接TCP服务器2.3 发送数据2.4 接收数据2.5 断开连接2.6 示例代码 三、TCP服务器的创建…

批量二维码的教程和优势:拓宽应用领域,提升效率与创新

随着二维码技术的不断发展,批量二维码在多个领域展现出了显著的优势,为商业和行业带来了更多便捷和创新。以下是批量二维码的一些显著优势: 1. 高效快速生成: 批量二维码一次性生成多个二维码,相较于逐个生成的方式&…

Linux之进程信号

目录 一、概念引入 1、生活中的信号 2、Linux中的信号 二、信号处理常见方式 三、信号的产生 1、键盘产生信号 2、系统调用接口产生信号 3、软件条件产生信号 4、硬件异常产生信号 四、信号的保存 相关概念 信号保存——三个数据结构 信号集——sigset_t 信号集操…

超简单的chatgpt-next-web部署教程!

随着AI的应用变广,各类AI程序已逐渐普及,尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景,大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

Docker基础教程 - 1 Docker简介

更好的阅读体验:点这里 ( www.doubibiji.com ) 1 Docker简介 Docker是一个强大的容器化平台,让你能够更轻松地构建、部署和运行应用程序。 下面我们来学习 Docker。 1.1 Docker是什么 1 现在遇到的问题 每次部署一台服务器&…