【视频讲解】Python贝叶斯卷积神经网络分类胸部X光图像数据集实例
全文链接:https://tecdat.cn/?p=37604
分析师:Yuanchun Niu
在人工智能的诸多领域中,分类技术扮演着核心角色,其应用广泛而深远。无论是在金融风险评估、医疗诊断、安全监控还是日常的交互式服务中,有效的分类算法都是实现智能决策的关键(点击文末“阅读原文”获取完整代码数据)。
相关视频
随着大数据时代的到来,分类算法面临着前所未有的挑战和机遇。一方面,海量的数据为算法提供了丰富的学习材料;另一方面,如何从这些数据中提取有价值的信息,构建准确、可靠的分类模型,成为了研究的热点。
本文旨在探讨分类技术在不同领域的应用,并深入分析其理论基础与实现方法。我们首先概述了分类问题的基本框架,包括常见的输入输出特性。随后,通过具体的应用实例的代码数据,展示了分类技术在手写字符识别数据等领域的实际应用。进一步地,本文详细讨论了分类方法的演进,从基于回归的简单分类到基于概率模型的复杂分类策略,再到现代的贝叶斯方法,揭示了分类技术的发展脉络。
特别地,本文重点研究了贝叶斯卷积神经网络(Bayesian CNN)在处理数据不确定性方面的优势。通过引入KL散度作为正则化项,贝叶斯CNN能够在模型训练过程中自然地考虑参数的不确定性,从而在面对数据的噪声和变化时,提供更加鲁棒的预测。本文通过在玩具数据集和真实世界的胸部X光图像数据集上的实验,验证了贝叶斯CNN的有效性,并探讨了其在实际应用中的潜力。
一、引言
在人工智能领域,分类是一项至关重要的任务,它在众多实际应用中发挥着关键作用。从金融领域的信用评分到医疗诊断,从手写字符识别到人脸识别,分类问题无处不在。本文将对不同领域的分类问题进行探讨,分析其输入输出特点,并深入研究分类的实现方法。
二、分类应用实例
信用评分
输入:收入、储蓄、职业、年龄、过往财务历史等信息。
输出:接受或拒绝。
医疗诊断
输入:当前症状、年龄、性别、过往医疗历史等。
输出:可能的疾病种类。
手写字符识别
输入:手写字符 “金”。
输出:识别结果。
人脸识别
输入:面部图像。
输出:对应的人物。
三、分类方法
基于回归的分类
以二分类为例,训练时将类别 1 表示为目标为 1,类别 2 表示为目标为 -1。测试时,接近 1 的归为类别 1,接近 -1 的归为类别 2。
多分类问题
以类别 1 目标为 1、类别 2 目标为 2、类别 3 目标为 3 等为例,说明多分类问题的复杂性。
理想的分类替代方案
函数(模型):若函数 g (x)>0,输出为类别 1;否则输出为类别 2。
损失函数:L (f) 为训练数据中函数结果错误的次数。
寻找最佳函数:例如感知机、支持向量机等。
四、从类别中获取概率
假设数据点是从高斯分布中采样得到,寻找背后的高斯分布以确定新数据点的概率。
五、最大似然估计
对于给定的 “水” 类型数据点 x1,x2,x3,...,x79,假设它们来自具有最大似然的高斯分布 (μ,Σ)。
高斯分布的概率密度函数用特定形式表示。
似然函数 L (μ,Σ) 为多个概率密度函数的乘积形式。
通过最大似然估计确定参数 μ,Σ=argmax (μ,Σ) L (μ,Σ),其中 μ* 有特定表达式。
六、分类应用
现在可以进行分类,例如对于 “水” 类型分类问题,有 f (μ1,Σ1)(x) 的表达式,其中 P (c1) 有特定值。类似地,对于另一类别有 f (μ2,Σ2)(x) 的表达式,其中 P (c2) 有特定值。如果 P (c1|x)>0.5,则 x 属于类别 1(水)。
贝叶斯卷积神经网络对数据的影响|附代码数据
在本研究中,我们探讨了KL权重在贝叶斯卷积神经网络(CNN)中对数据的影响。首先,我们使用标准化方法对数据进行预处理,以确保模型训练的有效性。
x = \text{Scaler}().\text{fit_transform}(x)
为了监控模型在每个训练周期后参数的不确定性,我们设计了一个回调函数PosteriorRecorder
,用于记录后验标准差。
``````
class PosteriorRecorder(tf.keras.callbacks.Callback):def \_\_init\_\_(self, \*\*kwargs):super(PosteriorRecorder, self).\_\_init\_\_(\*\*kwargs)
随后,我们对不同的KL权重进行了模型训练,并对结果进行了记录和分析。
最后,我们绘制了不同KL权重下后验标准差的图表,以直观展示其对模型性能的影响。
scaler = Scaler()x = scaler.fit_transform(x)
点击标题查阅往期内容
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
左右滑动查看更多
01
02
03
04
贝叶斯卷积神经网络在胸部X光图像数据集上的应用|附代码数据
在研究的第二部分,我们将贝叶斯CNN应用于真实数据集,以验证其在实际问题中的有效性。
``````
import warningswarnings.filterwarnings('ignore')import tensorflow as tf # 2.8.0import tensorflow_probability as tfp # 0.16
接着,我们加载并预处理了胸部X光图像数据集,为模型训练做好准备。
``````
data\_path = 'data/chest\_xray/'train\_ds = tf.keras.utils.image\_dataset\_from\_directory(data_path)
为了更好地理解数据集,我们探索了数据集中的图像和标签,并检查了类别分布。
我们定义了一个函数get_classes
来统计数据集中各类别的数量,并通过可视化手段展示了类别分布。
def get\_classes(dataset: tf.data.Dataset) -> np.ndarray:counts = \[\]for image, label in dataset:counts.append(np.argmax(label, axis=-1))# 使用Seaborn库绘制类别分布图sns.countplot(class\_names\_test, ax=ax\[1\])ax\[1\].set\_title('Test set')fig.suptitle('Class distribution')
为了近似计算KL散度,我们定义了kl_approx
函数,并将其应用于模型训练过程中。
``````
def kl\_approx(q, p, q\_tensor):return tf.reduce\_mean(q.log\_prob(q\_tensor) - p.log\_prob(q\_tensor))divergence\_fn = lambda q, p, q\_tensor: kl\_approx(q, p, q\_tensor) / (len(train\_classes))
我们封装了重参数化层的创建过程,以简化模型构建的复杂性。
``````
def get\_convolution\_reparameterization(filters, kernel\_size, activation, strides=1, padding='SAME', prior=prior, divergence\_fn=divergence\_fn, name=None) -> tfpl.Convolution2DReparameterization:"""返回一个Convolution2DReparameterization层。"""return tfpl.Convolution2DReparameterization(filters=filters,kernel\_size=kernel\_size,activation=activation,strides=strides,padding=padding,kernel\_posterior\_fn=tfpl.default\_mean\_field\_normal\_fn(is\_singular=False),kernel\_prior\_fn=prior,kernel\_divergence\_fn=divergence\_fn,bias\_posterior\_fn=tfpl.default\_mean\_field\_normal\_fn(is\_singular=False),bias\_prior\_fn=prior,bias\_divergence\_fn=divergence_fn,name=name)
通过构建残差块和特征提取器,我们构建了一个基于DenseNet121的贝叶斯ResNet模型,并对其进行了训练和评估。
``````
feature\_extractor = tf.keras.applications.DenseNet121(include\_top=False, input\_shape=(224, 224, 3), weights='imagenet')feature\_extractor.summary()# 构建贝叶斯ResNet模型# ...
在模型训练过程中,我们使用了自定义的损失函数和评估指标,并应用了早停和学习率衰减等策略来优化训练效果。
``````
model.compile(optimizer=tf.keras.optimizers.Adam(learning\_rate=0.001), loss=nll, metrics=\[tf.keras.metrics.CategoricalAccuracy()\])callbacks = \[tf.keras.callbacks.EarlyStopping(monitor='val\_categorical\_accuracy', patience=7, restore\_best\_weights=True, verbose=1),tf.keras.callbacks.ReduceLROnPlateau(monitor='val\_categorical\_accuracy', min\_lr=1e-9, factor=0.1, patience=3, verbose=1)\]model.fit(train\_ds, epochs=64, validation\_data=test_ds, callbacks=callbacks)
最后,我们对模型的预测结果进行了分析,以评估模型在真实数据上的性能。
def analyse\_model\_prediction(image, label=None, forward_passes=10):# ...# 分析模型预测
通过上述研究,我们展示了贝叶斯CNN在处理数据和真实数据时的有效性和灵活性。我们的研究为未来在更复杂的数据集上应用贝叶斯深度学习模型提供了有价值的参考。
关于分析师
在此对 Yuanchun Niu 对本文所作的贡献表示诚挚感谢,他完成了控制科学与工程专业的硕士研究生学位,专注深度学习、机器学习领域。擅长汇编语言、Python。
本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《Python贝叶斯卷积神经网络分类胸部X光图像数据集实例》。
点击标题查阅往期内容
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
使用贝叶斯层次模型进行空间数据分析
MCMC的rstan贝叶斯回归模型和标准线性回归模型比较
python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
matlab贝叶斯隐马尔可夫hmm模型实现
贝叶斯线性回归和多元线性回归构建工资预测模型
Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间
R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
随机森林优化贝叶斯预测分析汽车燃油经济性
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
Python贝叶斯回归分析住房负担能力数据集
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python用PyMC3实现贝叶斯线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言贝叶斯线性回归和多元线性回归构建工资预测模型
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言stan进行基于贝叶斯推断的回归模型
R语言中RStan贝叶斯层次模型分析示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
相关文章:

【视频讲解】Python贝叶斯卷积神经网络分类胸部X光图像数据集实例
全文链接:https://tecdat.cn/?p37604 分析师:Yuanchun Niu 在人工智能的诸多领域中,分类技术扮演着核心角色,其应用广泛而深远。无论是在金融风险评估、医疗诊断、安全监控还是日常的交互式服务中,有效的分类算法都是…...

src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录
(venv) shgbitaishgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddevice Collecting pyaudioDownloading PyAudio-0.2.14.tar.gz (47 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 47.1/47.1 kB 644.…...

移动端视频编辑SDK解决方案,AI语音识别添加字幕
对于众多Vlog创作者而言,繁琐的字幕添加过程往往成为提升内容质量的绊脚石。为了彻底改变这一现状,美摄科技凭借其深厚的AI技术积累与创新的移动端视频编辑SDK解决方案,推出了革命性的AI语音识别添加字幕功能,让视频创作更加高效、…...

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]
前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32VSCODE环境搭建。 安装ESP32-IDF https://dl.espre…...

Gemini AI 与 ChatGPT:哪个更适合为我策划婚礼?
我在六月订婚后,一心想着婚礼钟声,但在看到这些婚礼场地报价后,更像是警铃声响起。 “叮咚”已经被重新混音成“哗啦啦”——我需要帮助。 我甚至不知道如何 开始 计划婚礼。第一步是什么?我需要优先考虑什么?哪些任…...

log4j 同一线程隔离classloader下MDC信息不同问题解决 ThreadLocal问题分析
最近遇到日志文件记录错误的问题。一个任务的日志信息会被莫名的拆分到两个不同目录中。且有一个目录还是曾经执行过的任务的目录。经过分析,首先怀疑的是MDC没有清理的问题,这也是最直观的问题。因为任务是在线程池(fixedThreadPool)中运行的。由于线程…...

【2024-2025源码+文档+调试讲解】微信小程序的城市公交查询系统
摘 要 当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统城市公交查询管理采取了人工的管理方法…...

Android14音频进阶之定制ramdisk文件系统init服务(八十三)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…...

Clickhouse 为什么这么快
Clickhouse 的缘起 Clickhouse 最初是为 Yandex.Metrica 这个世界上第二大的Web分析平台开发的,并且一直是这个系统的核心组件。ClickHouse在Yandex.Metrica中的主要任务是使用非聚合数据在在线模式下构建报告,使用374台服务器组成的集群,在…...

后仿真中《建立违例和保持违例》你死板思维了吗?
最近胡乱翻翻一些大佬的博客文章,忽然看到了关于clock skew 的一篇文章,文章的链接贴在这里,供大家查阅。《Clock skew (qq.com)》。那么,这篇文章与今天的主题,由什么关系呢? 是因为,从中看到了关于时序违例的解读。UP主对保持时间和建立时间的解读,是从另一个角度,…...

springboot启动时替换配置参数
SpringBoot启动时配置参数替换 一.背景 SpringBoot项目启动的时候,在不使用配置中心等的前提下或者有公司强制使用指定的“密码箱”情况下,需要远程获取关键配置信息,比如数据库密码,则需要在项目启动前获取配置并且进行本地配置…...

postgres数据库中如何看查询是否走索引,以及在什么情况下走索引
在 PostgreSQL 中,可以通过 EXPLAIN 或 EXPLAIN ANALYZE 查看查询计划,以判断查询是否使用了索引。除此之外,了解索引的使用条件对于优化查询性能也很重要。 1. 如何查看查询是否使用索引 使用 EXPLAIN 查看查询计划 EXPLAIN 显示 PostgreSQL 如何执行查询,包括是否使用索…...

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月7日新模型预测第80弹
经过近80期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,70多期一共只错了8次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,…...

MQTT broker搭建并用SSL加密
系统为centos,基于emqx搭建broker,流程参考官方。 安装好后,用ssl加密。 进入/etc/emqx/certs,可以看到 分别为 cacert.pem CA 文件cert.pem 服务端证书key.pem 服务端keyclient-cert.pem 客户端证书client-key.pem 客户端key 编辑emqx配…...

深度剖析AI情感陪伴类产品及典型应用 Character.ai
前段时间AI圈内C.AI的受够风波可谓是让大家都丈二摸不着头脑,连C.AI这种行业top应用都要找谋生方法了!投资人摸不着头脑,用户们更摸不着头脑。在这之前断断续续玩了一下这款产品,这次也是乘着这个风波,除了了解一下为什…...

[数据集][目标检测]街头摊贩识别检测数据集VOC+YOLO格式758张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):758 标注数量(xml文件个数):758 标注数量(txt文件个数):758 标注类别…...

面试准备-3
BIO/NIO/AIO区别的区别? 同步阻塞IO : 用户进程发起一个IO操作以后,必须等待IO操作的真正完成后,才能继续运行。 同步非阻塞IO: 客户端与服务器通过Channel连接,采用多路复用器轮询注册的Channel。提高吞吐量和可靠性。用户进程发…...

Unity教程(十五)敌人战斗状态的实现
Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…...

利用深度学习实现验证码识别-3-ResNet18
在当今数字化时代,验证码作为一种重要的安全验证手段,广泛应用于各种网络场景。然而,传统的验证码识别方法往往效率低下,准确率不高。今天,我们将介绍一种基于 ResNet18 的验证码识别方法,它能够高效、准确…...

UDP通信实现
目录 前言 一、基础知识 1、跨主机传输 1、字节序 2、主机字节序和网络字节序 3、IP转换 2、套接字 3、什么是UDP通信 二、如何实现UDP通信 1、socket():创建套接字 2、bind():绑定套接字 3、sendto():发送指定套接字文件数据 4、recvfrom():接收指定地址信息的数据 三…...

windows下使用vscode编写运行以及调试C/C++
vscode支持类似于vs的断点调试c/c,也可以直接编译&运行c/c 先是编译运行 c/c的方法 微软官方起初设定的科学做法(这也是现在的科学做法)是通过在vscode集成控制台写命令行的方式来实现编译运行程序的,但也可以通过code runner插件…...

python容器4--集合
(1) 什么是集合 集合:Python中使用关键字set表示 集合中存储多个、没有顺序的、不能重复的、可以是不同类型的多个数据! (2) 集合的声明 python中通过set()或者花括号声明空集合、非空集合 # 声明空集…...

MySQL record 01 part
更改密码: alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MyS…...

2024年高教社杯全国大学生数学建模竞赛A题思路(2024数学建模国赛A题思路)
A题 “板凳龙” 闹元宵 “板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头,龙身和龙尾相随盘旋,整体呈圆盘状。一般来说,在舞龙队能够自如地盘入和盘出的前提下,盘龙…...

Go语言基础语法 20240904更新
代码开源地址 https://github.com/zhangdapeng520/zdpgo_basic 快速入门 示例代码: package mainimport "fmt"func main() {fmt.Println("Hello World") }第一行代码 package 用来声明包名。main包时整个程序的入口包,在一个Go语…...

软件测试 | 性能测试
性能测试的概念 为了 发现系统性能问题 或 获取系统性能相关指标 而进行的测试。 常见性能测试指标 并发数 即并发用户数。 从业务层面看,并发用户数指的是 实际使用系统的用户总数。从后端服务器层面看,指的是 web服务器在一段时间内处理浏览器请求而建…...

Arduino IDE
Arduino IDE(集成开发环境)的安装过程是一个相对直观且易于操作的流程,主要步骤包括下载、安装和配置。以下将详细阐述Arduino IDE的安装过程,同时提供一些背景信息和注意事项,确保安装过程顺利进行。 一、Arduino ID…...

统计学习方法与实战——统计学习方法之感知机
感知机 感知机三要素分析模型策略损失函数选择 算法原始形式对偶形式 相关问题 例子iris数据集分类实战数据集查看 显示结果sklearn 实战感知机 习题解答习题2.1解题步骤反证法 习题2.2习题2.3凸壳线性可分线性可分证明凸壳不相交证明充分性:凸壳不相交\Rightarrow⇒…...

语言学习有捷径?没错!这4个方法让你轻松搞定英语翻译
现在全世界都在用英语,这门语言真的超级重要。不管你是学习、上班还是出去玩,会点英语翻译肯定能帮上大忙。但是,对很多人来说,翻译英语还是挺难的。别急,今天我就来给你介绍几个超好用的英语翻译工具,让你…...

聊一聊大型网站稳定性建设思路
目录 架构阶段的稳定性建设项目 编码阶段的稳定性建设 测试阶段的稳定性建设 发布阶段的稳定性建设 运行阶段的稳定性建设项目 故障发生时的稳定性建设 网站稳定性的建设是一项综合的系统工程,就像人的健康一样,如果平时不注意健康饮食、不注意锻炼…...