【视频讲解】Python贝叶斯卷积神经网络分类胸部X光图像数据集实例

news2024/12/23 23:03:04

全文链接: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,假设它们来自具有最大似然的高斯分布 (μ)。

  1. 高斯分布的概率密度函数用特定形式表示。

  2. 似然函数 L (μ,Σ) 为多个概率密度函数的乘积形式。

  3. 通过最大似然估计确定参数 μ=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,用于记录后验标准差。

c02ed8f3b21549d49fb7f1aac16434ab.png

``````
class PosteriorRecorder(tf.keras.callbacks.Callback):def \_\_init\_\_(self, \*\*kwargs):super(PosteriorRecorder, self).\_\_init\_\_(\*\*kwargs)

随后,我们对不同的KL权重进行了模型训练,并对结果进行了记录和分析。

最后,我们绘制了不同KL权重下后验标准差的图表,以直观展示其对模型性能的影响。

scaler = Scaler()x = scaler.fit_transform(x)

94ff106ce3a5b394e6c9b305737ef703.png

87409555be21c1d800bcdb1703fa6fea.png


点击标题查阅往期内容

7e16ef3de8dfe6ebfa5ab6542bfe4a04.jpeg

R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例

outside_default.png

左右滑动查看更多

outside_default.png

01

dfa2c0685157f4659a46d530aa19df3d.png

02

4c718a66525aa3aa480cba83cb471563.png

03

87687dc7fbecd10ae663582adb70be2d.png

04

7e52d942b053fc601a50decc6c3f5423.png

贝叶斯卷积神经网络在胸部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)

为了更好地理解数据集,我们探索了数据集中的图像和标签,并检查了类别分布。

76f3155954480cd778de3219f5dfff39.png

1cf8026ad71aacc7ae3d36a4de445bd0.png

我们定义了一个函数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')

2ba365b88c364b3196cecf5ccaa02a9d.png

为了近似计算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):# ...# 分析模型预测

2340f1a9a783dcf476de08419d9ac355.png

5b590d66c6c6a945859324d802b5e628.png

通过上述研究,我们展示了贝叶斯CNN在处理数据和真实数据时的有效性和灵活性。我们的研究为未来在更复杂的数据集上应用贝叶斯深度学习模型提供了有价值的参考。

关于分析师

19699bd005ed62da9ba7552dc81e134f.png

在此对 Yuanchun Niu 对本文所作的贡献表示诚挚感谢,他完成了控制科学与工程专业的硕士研究生学位,专注深度学习、机器学习领域。擅长汇编语言、Python。

b3e166222615e7664dd2a45acf0d35f8.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

b352546f73a46ae4847c2a9a6e2d09be.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

499be8fe1e4ca45b31812a517c9737e3.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《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采样用于回归的贝叶斯估计

60624e14cad98bc8b6023e4f4bcdeca0.jpeg

f56ab9bd7fe34f69cb5beb3aba3be8ca.png

7e7208c09a948ff2b38748830ed91bf5.png

79ea89cda64f9e760a3ecc4cce484e23.jpeg

e2b4399baa1e0b3b82e638c2f2215d4a.png

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

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

相关文章

数据仓库理论知识

1、数据仓库的概念 数据仓库(英文:Date Warehouse,简称数仓、DW),是一个用于数据存储、分析、报告的数据系统。数据仓库的建设目的是面向分析的集成化数据环境,其数据来源于不同的外部系统&#…

Git 修改Push后的Commit Message

向远程仓库push代码之后,在IDEA中无法直接修改Commit Message,需要在终端或控制台中输入以下命令(HEAD~1中的1表示只对最后一个提交进行修改,因此1可以自定义) git rebase -i HEAD~1执行完rebase指令后,会…

带AI功能朵米客服系统3.5无限制开心版+搭建文档

带AI功能朵米客服系统3.5无限制开心版搭建文档,朵米客服系统是一款全功能的客户服务解决方案,提供多渠道支持(如在线聊天、邮件、电话等),帮助企业建立与客户的实时互动。该系统具有智能分流功能,可以快速将…

0基础跟德姆(dom)一起学AI Python进阶07-多线程_生成器

* 多进程案例 * 带参数的多进程代码**(重点)** * 查看进程的id * 演示: 进程之间数据是相互隔离的 * 多线程案例 * 入门案例 * 带参数的多线程代码**(重点)** * 演示: 线程之间数据是相互共享的 * 互斥锁 * 上下文管理器**(重点)** > 解析: with open原理, 为啥…

每日一题,力扣leetcode Hot100之198.打家劫舍

这一道题乍一看可以双层循环暴力解,但是仔细一想有可能最大利益并不是一家隔着一家偷,我可以间隔很多家偷,所以 这个题的思路还是有点像爬楼梯,用动态规划解。 首先确立动态规划的初始条件: 1.dp[0]nums[0]只有一家 …

企业邮箱怎么设置邮箱监控(老板监控员工邮件的方法推荐)【企业管理必备】

在现代企业中,电子邮件作为主要的沟通工具,不仅承载着日常的工作信息,还涉及大量机密内容。为了确保信息安全、提高工作效率,许多企业希望设置邮件监控,了解员工的邮箱使用情况。 本文将详细介绍企业邮箱如何设置邮箱…

Qt-使用qrc文件管理资源(15)

目录 qrc机制 创建qrc文件 1.在项目中创建一个qrc文件 2.导入图片到qrc文件中 2.2先设置一个前缀 2.3把刚刚使用的图片导入到资源文件中 测试结果 图片文件到哪去了? qrc机制 上篇文章中,我们提到了窗口的图片怎么用QIcon进行修改,…

MySQL record 01 part

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

USB - 笔记

1.USB接口区分 2 充电宝 图中提到的各种充电协议都是用于快速充电技术的标准,适用于不同品

聚类算法指南

欢迎来到雲闪世界。 聚类是任何数据科学家必备的技能,因为它对解决实际问题具有实用性和灵活性。本文概述了聚类和不同类型的聚类算法。 什么是聚类? 聚类是一种流行的无监督学习技术,旨在根据相似性将对象或观察结果分组。聚类有很多有用…

c++的封装

实现my_string中可能实现的功能 #include <iostream> #include<cstring> using namespace std; class my_string {char *str; //记录c风格的字符串int size; //记录字符串的实际长度int capacit;//记录最大容量public://无参的构造函数my_string():size(0)…

护眼台灯十大排名有哪些?盘点2024年央视公认最好的护眼灯!

随着学业负担的加重和电子设备的广泛使用&#xff0c;青少年的近视问题变得日益严峻&#xff0c;近视率也在持续上升。导致近视的因素多样&#xff0c;不仅仅局限于电子屏幕的过度使用&#xff0c;还包括遗传因素、不良的用眼习惯、环境条件、营养不良以及过重的学习压力等&…

公司电脑能监控聊天记录吗?公司监控微信聊天记录的方法,一分钟速成!

在现代企业中&#xff0c;微信已经成为许多员工日常沟通的主要工具。虽然它极大地提高了工作效率&#xff0c;但也给公司管理带来了一些挑战&#xff0c;比如如何防止员工在工作时间闲聊、保护企业机密信息不外泄等。因此&#xff0c;不少公司希望对员工的微信聊天记录进行监控…

SealSuite 一站式 IT 管理与办公安全解决方案,助力出海企业夯实数字化底座

数字化办公时代&#xff0c;企业升级 IT 基础设施&#xff0c;已不再是选择题&#xff0c;而是必答题。 数字化办公时代&#xff0c;企业为何要升级 IT 基础设施&#xff1f; 随着时代变化与科技进步&#xff0c;人们的工作方式也发生了巨大变化。如今&#xff0c;远程办公、全…

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节&#xff0c;涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件&#xff0c;最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂…

【Java数据结构】反射、枚举以及lambda表达式

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.反射 2.1反射定义 2.2反射主要应用场景 2.3Class类(反射机制的起源) 2.31获取Class类 2.32Class类常用方法 2.33获得类中的成员变量 2.34使用类中的成员…

Leetcode3258. 统计满足 K 约束的子字符串数量 I

Every day a Leetcode 题目来源&#xff1a;3258. 统计满足 K 约束的子字符串数量 I 解法1&#xff1a;暴力 暴力枚举每一个子字符串&#xff0c;看是否满足 k 约束。 代码&#xff1a; /** lc appleetcode.cn id3258 langcpp** [3258] 统计满足 K 约束的子字符串数量 I*/…

WebAPI(三)、 DOM 日期对象Date;获取事件戳;根据节点关系查找节点

文章目录 DOM1. 日期对象(1)、日期对象方法(2)、时间戳(3)、下课倒计时 2. 节点操作(1)、 查找节点&#xff08;根据节点关系找&#xff09;(2)、 增加节点&#xff1a;创建create、追加append、克隆clone(3)、 删除节点remove DOM 1. 日期对象 日期对象就是用来表示时间的对…

PMP–一、二、三模–分类–14.敏捷–技巧–原型MVP

文章目录 技巧一模14.敏捷--原型法--项目生命周期--迭代型生命周期&#xff0c;通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈&#xff0c;因此原型法比较好用。23、 [单选] 一个敏捷团队的任务是开发…

【Hot100算法刷题集】哈希-02-字母异位词分组(含排序构造键、自定义键、自定义哈希函数法)

&#x1f3e0;关于专栏&#xff1a;专栏用于记录LeetCode中Hot100专题的所有题目 &#x1f3af;每日努力一点点&#xff0c;技术变化看得见 题目转载 题目描述 &#x1f512;link->题目跳转链接 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺…