Python实现PSO粒子群优化算法优化CNN-Transformer回归模型(优化权重和阈值)项目实战

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

1.项目背景

本项目旨在利用粒子群优化(PSO)算法优化卷积神经网络(CNN)和变压器(Transformer)结合的回归模型,以提高模型的预测性能。具体而言,我们将使用PSO算法来优化模型的权重和阈值参数,从而提升模型在特定任务上的表现。

随着深度学习技术的发展,CNN和Transformer模型在图像识别、自然语言处理等领域取得了显著的成果。然而,这些模型通常包含大量的参数,传统的梯度下降方法在优化这些参数时可能会遇到局部最优解的问题,导致模型性能不佳。粒子群优化(PSO)算法作为一种全局优化方法,可以有效避免局部最优解,提高模型的泛化能力。

本项目通过结合CNN和Transformer模型,并使用PSO算法进行参数优化,旨在提高模型在回归任务中的性能。希望通过本项目的实施,能够为深度学习模型的优化提供新的思路和方法。

本项目通过Python实现PSO粒子群优化算法优化CNN-Transformer回归模型(优化权重和阈值)项目实战。        

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()方法查看前五行数据:

关键代码:

3.2数据缺失查看

使用Pandas工具的info()方法查看数据信息:

从上图可以看到,总共有11个变量,数据中无缺失值,共2000条数据。

关键代码: 

3.3数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

关键代码如下:  

4.探索性数据分析

4.1 y变量分布直方图

用Matplotlib工具的hist()方法绘制直方图:

4.2 相关性分析

从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。  

5.特征工程

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

关键代码如下: 

5.2 数据集拆分

通过train_test_split()方法按照80%训练集、20%测试集进行划分,关键代码如下:  

5.3 特征样本增维

增维后的形状如下:

6.构建PSO粒子群优化算法优化CNN-Transformer回归模型     

主要使用通过PSO粒子群优化算法优化CNN-Transformer回归模型(优化权重和阈值),用于目标回归。      

6.1 PSO粒子群优化算法寻找最优参数值 

最优参数值(部分权重和阈值截图):

   

6.2 最优参数构建模型 

编号

模型名称

参数

1

CNN-Transformer回归模型      

set_weights(best_weights_reshaped)

6.3 模型摘要信息 

6.4 模型网络结构

6.5 模型训练集测试集损失曲线图

7.模型评估

7.1评估指标及结果   

评估指标主要包括R方、均方误差、解释性方差、绝对误差等等。

模型名称

指标名称

指标值

测试集

CNN-Transformer回归模型      

R方

0.8434

均方误差

6977.2641

解释方差分

0.8443

绝对误差

66.0992 

从上表可以看出,R方分值为0.8434,说明模型效果比较好。    

关键代码如下:     

  

7.2 真实值与预测值对比图

从上图可以看出真实值和预测值波动基本一致,模型效果良好。       

8.结论与展望

综上所述,本文采用了PSO粒子群优化算法优化CNN-Transformer回归模型(优化权重和阈值)来构建回归模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。 

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

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

相关文章

<tauri><websocket>tauri集成web端使用websocket实现数据通讯

前言 本文是在websocket实现通讯的基础上,将前端项目集成到tauri中,以实现桌面窗口程序。 效果展示: 环境配置 系统:windows 平台:visual studio code 语言:javascript、html、rust 库:tauri、nodejs 概述 此前,我的想法是实现网页端与PLC进行socket通讯,利用webs…

Python学习从0到1 day29 Python 高阶技巧 ⑦ 正则表达式

目录 一、正则表达式 二、正则表达式的三个基础方法 1.match 从头匹配 2.search(匹配规则,被匹配字符串) 3.findall(匹配规则,被匹配字符串) 三、元字符匹配 单字符匹配: 注: 示例&a…

【鸣潮,原神PC端启动器】仿二次元手游PC端游戏启动器,以鸣潮为例。

二游GAMELauncher启动器 1.前言 许多二次元手游(原神,鸣潮,少女前线)的PC端启动器都是使用Qt做的,正好最近正在玩鸣潮,心血来潮,便仿鸣潮启动器,从头写一个。先下载一个官方版的PC启…

STM32单片机CAN总线汽车线路通断检测

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…

H.265流媒体播放器EasyPlayer.js播放器出现加载视频等待画面时长过长的原因排查

在数字媒体时代,用户体验是衡量播放器性能的关键指标之一。EasyPlayer.js网页web无插件播放器作为一款流行的Web视频播放器,其加载速度和响应时间直接影响着用户的观看体验。 1、问题描述 加载视频等待画面时长过长。 2、可能的原因: 检查下…

联想“喜新厌旧”

科技新知 原创作者丨萧维 编辑丨蕨影 十月份,联想很忙。 先是2024联想科技创新大会15日在美国华盛顿州西雅图举行,联想大秀了一下自己在人工智能领域的创新产品、技术和解决方案,英特尔、AMD、英伟达三巨头更同时为其站台;后是与…

fpga 同步fifo

FIFO 基础知识 FIFO(First In First Out,即先入先出),是一种数据缓存器,用来实现数据先入先出 的读写方式。在 FPGA 或者 ASIC 中使用到的 FIFO 一般指的是对数据的存储具有先入先出 特性的缓存器,常被用于…

Spark:大数据处理的强大引擎

一、Spark 简介 Apache Spark 是一个专为大规模数据处理而设计的快速、通用、可扩展的大数据分析计算引擎。它诞生于 2009 年,由美国加州伯克利大学的 AMP 实验室开发,2013 年被纳入 Apache 开源项目,并迅速成为顶级项目。 Spark 被认为是 …

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC(精简指令集)MCU的SOC芯片,用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统? 无钥匙进入系统具有无钥匙进入并且启动的功能,英文名称是PKE&…

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示: 其中 ABCDE 为前5名的问题种类,其中A问题有124个(出现了124次) 数据说明: 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值,所有出…

在 Windows 上搭建 FTP 服务器

(1)搭建 FTP 服务器 ,为 windows 开启 ftp功能 :控制面板 -- 》 程序和功能 -- 》 打开或关闭 windows 功能 ,勾选 web 管理工具下所有选项 ,如下图所示: (2)添加 FTP 站…

AI开发-计算机视觉库-OpenCV

1 需求 官网:OpenCV - Open Computer Vision Library 2 接口 3 示例 import cv2image cv2.imread("./data/train/1_1.jpg") print(type(image)) 4 参考资料

STM32 ADC --- DMA采样

STM32 ADC — DMA采样 文章目录 STM32 ADC --- DMA采样cubeMX配置重要 :cubeMX配置使用DMA时的一个问题 代码编写一维数组接收数据二维数组接收数据 使用cubeMX生成HAL工程 cubeMX配置 上面红框中选择配置为连续转换模式,即通过HAL_ADC_Start_DMA()函数…

【WPF】Prism学习(二)

Prism Commands 1.命令(Commanding) 1.1. ViewModel的作用: ViewModel不仅提供在视图中显示或编辑的数据,还可能定义一个或多个用户可以执行的动作或操作。这些用户可以通过用户界面(UI)执行的动作或操作…

两部手机的IP地址:是否会相同?全面探讨

在数字化时代,手机已成为我们生活中不可或缺的一部分,而IP地址作为手机连接互联网的重要标识,扮演着举足轻重的角色。许多用户可能会好奇,两部手机在连接网络时,它们的IP地址是否会相同?这个问题看似简单&a…

【代码随想录day31】【C++复健】56. 合并区间;738.单调递增的数字

56. 合并区间 遇到了三个问题,一一说来: 1 比较应该按左区间排序,我却写了右区间。由于本题是合并区间,判断是否连续显然是用下一个的左区间与前一个的右区间比较,属于没想清楚了。 2 在写for循环时写成了如下的代码…

uniapp: 微信小程序包体积超过2M的优化方法

一、问题描述 在使用uniapp进行微信小程序开发时,经常会遇到包体积超过2M而无法上传: 二、解决方案 目前关于微信小程序分包大小有以下限制: 整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M) 单个…

MySQL Online DDL

文章目录 1. 在线DDL的优势2. 支持的DDL操作3. 在线DDL的原理4. Online DDL的操作流程1. 准备阶段(Prepare phase)2. 拷贝阶段(Copy phase)3. 应用阶段(Apply phase)4. 替换阶段(Swap phase&…

【freertos】FreeRTOS时间管理

FreeRTOS时间管理 一、睡眠延时函数1、vTaskDelay2、vTaskDelayUntil3、相对延时与绝对延时对比 二、自定义延时函数1、微秒延时2、毫秒延时 一、睡眠延时函数 1、vTaskDelay \quad 在UCOSIII 中延时函数OSTimeDly()可以设置为三种模式:相对模式、周期模式和绝对模式。在FreeR…

栈相关算法题1|通过栈判断链表是否对称|共享栈入栈出栈|括号匹配|多种括号配对|递归求序列最大值(C)

通过栈判断链表是否对称 设单链表的表头指针为L,data域为字符型,判断该链表的全部n个字符是否中心对称 xyx,xyyx 算法思想 使用栈来判断链表中的数据是否中心对称,让链表的前一半元素依次进栈 在处理链表的后一半元素时&#x…