Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战

news2024/11/25 6:52:54

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

随着深度学习技术的发展,卷积神经网络(Convolutional Neural Networks, CNNs)和循环神经网络(Recurrent Neural Networks, RNNs)已经成为处理自然语言处理(NLP)、计算机视觉(CV)等领域的强大工具。CNN 能够有效地提取局部特征,而 RNN 特别擅长处理序列数据,捕捉时间序列中的长期依赖关系。双向长短时记忆网络(Bidirectional Long Short-Term Memory, BiLSTM)作为一种特殊的 RNN 结构,能够从前向后和从后向前两个方向捕捉序列中的信息,从而更好地理解上下文语境。

然而,构建高效的 CNN-BiLSTM 模型面临着一系列挑战,尤其是超参数的选择。传统的网格搜索或随机搜索方法往往耗时较长,而且不一定能找到最优解。近年来,贝叶斯优化(Bayesian Optimization, BO)作为一种高效的全局优化方法,在超参数调优方面表现出了显著的优势。贝叶斯优化利用概率模型(通常是高斯过程)来估计目标函数的分布,并通过优化一个获得函数(Acquisition Function)来指导后续的搜索方向,从而有效地探索和开发搜索空间。

本项目使用Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战。   

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

编号 

变量名称

描述

1

x1

2

x2

3

x3

4

x4

5

x5

6

x6

7

x7

8

x8

9

x9

10

x10

11

y

标签

数据详情如下(部分展示):

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

从上图可以看到,总共有11个字段。

关键代码:

3.2 缺失值统计

使用Pandas工具的info()方法统计每个特征缺失情况:

从上图可以看到,数据不存在缺失值,总数据量为2000条。

关键代码:  

3.3 变量描述性统计分析

通过Pandas工具的describe()方法来来统计变量的平均值、标准差、最大值、最小值、分位数等信息:

关键代码如下:

4.探索性数据分析

4.1 y变量分类柱状图

用Pandas工具的value_counts().plot()方法进行统计绘图,图形化展示如下:

从上面图中可以看到,分类为0和1的样本,数量基本一致。

4.2 y变量类型为1 x1变量分布直方图

通过Matpltlib工具的hist()方法绘制直方图:

从上图可以看出,y=1的数据主要集中在-1到3之间。

4.3 相关性分析

通过Pandas工具的corr()方法和seaborn工具的heatmap()方法绘制相关性热力图:

从图中可以看到,正数为正相关,负数为负相关,绝对值越大相关性越强。

5.特征工程

5.1 建立特征数据和标签数据

y为标签数据,除 y之外的为特征数据。关键代码如下:

5.2 数据集拆分

数据集集拆分,分为训练集和测试集,80%训练集和20%测试集。关键代码如下:

5.3 数据样本增维

数据样本增加维度后的数据形状:

6.构建贝叶斯优化器优化CNN-BiLSTM分类模型

主要使用基于贝叶斯优化器优化CNN-BiLSTM分类算法,用于目标分类。  

6.1 构建调优模型

编号

模型名称

调优参数

1

CNN-BiLSTM分类模型

int(units)

2

round(learning_rate, 4)

3

int(epochs)

6.2 最优参数展示

最优参数结果展示:

6.3 最优参数构建模型 

编号

模型名称

调优参数

1

CNN-BiLSTM分类模型

units=int(params_best['units'])

2

round(params_best['learning_rate'], 4)

3

epochs=int(params_best['epochs'])

6.4 模型摘要信息

6.5 模型网络结构

6.6 模型训练集测试集损失和准确率曲线图 

7.模型评估

7.1 评估指标及结果 

评估指标主要包括准确率、查准率、召回率、F1分值等等。 

模型名称

指标名称

指标值

测试集

CNN-BiLSTM分类模型 

准确率

0.9600

查准率

0.9622

召回率

0.9519

F1分值

0.957

从上表可以看出,F1分值为0.957,说明此模型效果良好。

关键代码如下:

7.2 分类报告

模型的分类报告:

从上图可以看到,分类类型为0的F1分值为0.96;分类类型为1的F1分值为0.96;整个模型的准确率为0.96。

7.3 混淆矩阵

从上图可以看出,实际为0预测不为0的 有7个样本;实际为1预测不为1的 有9个样本,整体预测准确率良好。

8.结论与展望

综上所述,本项目采用了基于贝叶斯优化器优化卷积神经网络-双向长短时记忆循环神经网络分类模型,最终证明了我们提出的模型效果良好。 

# 描述性统计分析
print(df.describe())
print('******************************')

#  y变量柱状图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
# kind='bar' 绘制柱状图
df['y'].value_counts().plot(kind='bar')  # 绘图
plt.xlabel("y变量")  # 设置x轴名称
plt.ylabel("数量")  # 设置y轴名称
plt.title('y变量柱状图')  # 设置标题名称
plt.show()  # 展示图片

# 获取方式:
 
# 项目实战合集导航:
 
# https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2

# https://item.taobao.com/item.htm?ft=t&id=830679327825

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df.loc[df['y'] == 1, 'x1']  # 过滤出y=1的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')  # 绘图
plt.xlabel('x1')  # 设置x轴名称
plt.ylabel('数量')  # 设置y轴名称
plt.title('y=1样本x1变量分布直方图')  # 设置标题名称
plt.show()  # 展示图片

# 数据的相关性分析
sns.heatmap(df.corr().round(2), cmap="YlGnBu", annot=True)  # 绘制热力图
plt.title('相关性分析热力图')  # 设置标题名称

'欢迎关注下方公众号,谢谢'

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

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

相关文章

Linux驱动基础 | sys文件系统

前言思考sys文件系统简介 sys文件系统是什么sys文件系统功能描述sysfs与objectsysfs接口使用 sysfs读写操作例子sysfs常用的接口sysfs常用的结构体代码实验总结 前言 上篇介绍了Linux驱动中procfs接口的创建,今天介绍sysfs接口的创建,本篇内核采用5.10版…

分支电路导体的尺寸确定和保护

本文旨在确定为分支电路负载供电的导体的尺寸和保护。 支路额定电流 NEC 第 210 条规定了分支电路导体尺寸和过流保护的一般要求。 允许额定电流或过流保护装置的设置确定了分支电路额定值 (210.18)。电路的安培额定值取决于保护导体的断路器或保险丝的额定值,而…

传统CV算法——图像基本操作与形态学操作

环境配置地址 图像显示 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB imgcv2.imread(cat.jpg) img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img_gray.shape cv2.imshow("img_gray", img_gray) cv2…

SprinBoot+Vue实验室考勤管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

d3dx9_43.dll文件缺失的具体处理方法,科学分析5种d3dx9_43.dll修复方法

在使用电脑的过程中,尤其是启动某些游戏或程序时,可能会弹出一条错误信息:“无法找到 d3dx9_43.dll”或者“d3dx9_43.dll文件缺失”。这通常表明你的系统中缺少重要的 DirectX 动态链接库(DLL)文件,阻碍了程序的正常运行。本文将提…

GEE数据集:欧美1950-2022年扩展春季指数(SI-x)

目录 高分辨率扩展春季指数数据库 简介 数据集说明 空间信息 代码 代码链接 APP链接 结果 引用 许可 网址推荐 0代码在线构建地图应用 机器学习 高分辨率扩展春季指数数据库 简介 扩展春季指数(SI-x)为研究春季开始的时间及其与气候变化的…

【加密社】如何根据.bat文件恢复密钥

加密社 看了这篇指南,你将了解助记词和密钥地址(qianbao)背后的基本原理。 以及,如何找回你的大饼密钥。 Not your key, not your coin 如果你不掌握自己加密货币钱包的私钥,那么你实际上并不能完全控制你的资产 在当今…

科研|基于SprinBoot+vue的科研管理系统(源码+数据库+文档)

科研管理系统 基于SprinBootvue的科研管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 科研队伍功能实现 用户功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

CTF Show逆向4reserve wp--mingyue

(本题难度较大,分析起来比较复杂,针对该题本文对其中比较重要的部分做了较详细的概述,有问题的地方,请指正) 第一步 查壳。本题为64位 第二步 各部分函数分析 (一) 分析main函数。 函数签名 int __…

达梦数据库事务管理

目录 一、事务简介 二、事务特性 1.原子性 2.一致性 3.隔离性 4.持久性 三、事务提交 1.自动提交模式 2.手动提交模式 3.隐式提交 四、事务回滚 1.自动回滚 2.手动回滚 3.回滚到保存点 4.语句级回滚 五、事务锁定 1.锁模式 (1)共享锁 …

WebGIS与WebGL是什么,两者之间的关系?

WebGL和 WebGlS 都是 web 技术领域的重要内容,特别是这几年webgis开发领域,和webgl打交道是必然的,常见的WebGL开发的基础上,比如二维的Leaflet、三维的Cesium也都是热门。 WebGL是一种基于 HTML5 Canvas 元素的 JavaScriptAPI&a…

sqli-labs靶场通关攻略(61-65)

Less-61 步骤一:查看数据库 ?id1)) and updatexml(1,concat(1,(select database())),1)-- 步骤二:查看表名 ?id1)) and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity)),1)--…

【专题】2024年中国游戏出海洞察报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37570 2023 年全球游戏市场规模高达 6205.2 亿美元,且预计未来持续增长,这清晰地展示了该市场的巨大潜力和良好前景。 中国游戏在全球移动游戏市场的份额于 2023 年已达 37%,产业贡献超 30% 的市场…

手动添加jar包到本地仓库

依赖包不存在于任何的maven仓库中,所以要手工添加进本地仓库,过程如下: 将EasyModbusJava.jar包复制到maven目录的 bin目录下;执行cmd到该bin目录路径下执行以下指令 mvn install:install-file -DfileEasyModbusJava.jar -Dgroup…

C++笔记15•数据结构:二叉树之二叉搜索树•

二叉搜索树 1.二叉搜索树 概念: 二叉搜索树又称二叉排序树也叫二叉查找树,它可以是一棵空树。 二叉树具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都…

STM32CubeMX CAN收发数据

目录 一、CAN总线 1. 差分信号 2. CAN收发器 3. CAN帧结构 4. CAN波特率设置 5. 标识符筛选 二、CubeMX配置 三、Keil代码 一、CAN总线 CAN(Controller Area Network,控制器局域网络)是一种用于车辆、工业自动化等领域的通信协议&…

数分基础(05)中心极限定理、假设检验与AB测试简介

文章目录 1. 中心极限定理1.1 概念1.2 直观理解1.3 重要性 2. 示例2.1 数据集2.2 验证思路(1)获取一个样本均值(2)假设抽取1000次(3)增大样本容量 2.3 实现2.4 结果 2. 假设检验2.1 总体思路2.2 比较两种运…

环信高质量全球网络——70%丢包环境,消息100%送达,抗弱网能力大幅提升!

在当今数字化时代,稳定而高效的即时通讯已成为企业和个人不可或缺的工具。环信即时通讯(IM)云服务一直致力于为用户提供优质的通信体验。如今,环信IM通过自研传输协议,实现了在弱网环境下的卓越表现,确保消…

.NET 一款具备签名用于绕过防护的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…