Python实现PSO粒子群优化卷积神经网络CNN回归模型项目实战

news2024/10/7 18:21:00

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

1.项目背景

PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式。

本项目通过PSO粒子群优化卷积神经网络CNN算法来构建回归模型。

2.数据获取

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

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

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

3.2数据缺失查看

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

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

关键代码:

3.3数据描述性统计

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

关键代码如下:

4.探索性数据分析

4.1 y变量直方图

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

从上图可以看到,y变量主要集中在-200~200之间。

4.2 相关性分析

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

5.特征工程

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

关键代码如下:

5.2 数据集拆分

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

6.构建PSO粒子群优化卷积神经网络CNN回归模型

主要使用PSO粒子群算法优化CNN算法,用于目标回归。

6.1 算法介绍

     说明:PSO算法介绍来源于网络,供参考,需要更多算法原理,请自行查找资料

(1)基本思想:

PSO是由Eberhart 和Kennedy于1995年提出的一种全局搜索算法,是一种模拟自然界的生物活动以及群体智能的随机搜索算法。除了考虑模拟生物的群体活动之外,融入了个体认知和社会影响,是一种群体智能算法。

鸟群觅食和粒子群优化算法的基本定义对照表: 

(2)基本流程:

粒子群优化算法要求每个粒子在寻优的过程中维护两个向量,速度向量vi=[vi1,vi2,…,viD]   和位置向量xi=[xi1,xi2,…,xiD]   ,其中i表示例子的编号,D是求解问题的维数。粒子的速度决定了其运动的方向和速度,而位置则体现了粒子所代表的解在解空间中的位置,是评估该解质量的基础。算法同时还要求每个粒子各自维护一个自身的历史最优位置向量(pBest)和群体还维护一个全局最优向量(gBest)。

  • PSO的算法步骤:

(1)初始化所有粒子、初始化它们的速度和位置,并且将粒子的历史最优pBest设为当前位置,而群体中最优的粒子作为当前的gBest。

(2)在每一次迭代中,计算各个粒子的适应度函数值。

(3)如果该粒子当前的适应度函数值比历史最优值好,那么历史最优将会被当前位置所替代。

(4)如果该粒子的历史最优比全局最优好,全局最优将会被粒子的历史最优所替代。

(5)对每个粒子  的第  维的速度和位置分别按照下面公式进行更新:

 

(6)如果未满足结束条件,则转到(2),否则输出gBest并结束。

  • 参数说明:

ω :惯性权重,非负数,调节对解空间的搜索范围,一般初始化未0.9,随着迭代可递减到0.4.

c1,c2 :加速度常数,调节学习最大步长.

rand1d,rand2d :两个随机函数,取值范围[0,1],以增加搜索随机性.

需要注意的是在更新过程中,PSO要求采用一个由用户设定的Vmax 来限制速度的范围,Vmax 的每一维Vmaxd 一般可以取相应维的取值范围的10%-20%,另外位置更新后必须是合法的,所以每次更新后要检查是否合法,否则进行修正,一般修正方法是重新随机设定或者限定在边界。

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

关键代码:

迭代过程数据:

 最优参数:

 6.3 最优参数值构建模型

6.4 最优模型的摘要信息

 通过上图可以看到,模型共有4936个参数,以及每一层的参数。

6.5 最优模型的结构

通过上图可以看到,每一层的输入和输出以及层与层之间的结果关联关系。

6.6 模型损失可视化图

 通过上图可以看到,训练集和测试集损失随着迭代次数的增加逐步减小,在迭代8次以后损失逐渐趋于平稳。

7.模型评估

7.1 评估指标及结果

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

从上表可以看出,R方0.9518,为模型效果较好。  

关键代码如下:

7.2 真实值与预测值对比图

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

8.结论与展望

综上所述,本项目采用了PSO粒子群算法寻找卷积神经网络CNN算法的最优参数值来构建回归模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ 
提取码:thgk

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

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

相关文章

学完这篇,再不怕防火墙NAT策略问题

Q&A 1、配置了nat server后Tracert防火墙上的global地址,显示信息是什么? 无论具有Inside地址的设备在防火墙内部有多少跳,Tracert时全部显示nat server的global的地址。如果有3跳,则显示3次global地址。 2、nat server和destination-n…

艾美捷CMRL-1066培养基背景和化学性质分析

艾美捷CMRL-1066培养基背景: CMRL-1066是20世纪60年代后期在康诺医学研究实验室开发的一种化学定义的培养基。CMRL-1066最初设计用于非补充培养物中的小鼠L细胞。虽然CMRL-1066是为无血清培养而开发的,但它可以补充血清并用于支持多种细胞类型的生长。适…

[激光原理与应用-50]:《激光焊接质量实时监测系统研究》-1-绪论 (模式识别)

目录 1.1 问题概述 1.2 激光焊接质量监测在国内外的研究现状 1.2.1 国内外研究概况、水平和发展趋势 1.2.2 信号检测与传感器 1.2.3 信号分析与缺陷诊断 (DSP或FPGA) 1.3 本课题研究内容及意义 后记: 1.1 问题概述 激光焊接是一种高效…

YOLO v3

参考 YOLO v3 - 云社区 - 腾讯云 摘要 我们对YOLO进行了一些更新!我们做了一些小的设计改变使它更好。我们还训练了这个非常棒的新网络。比上次大一点,但更准确。不过还是很快的,别担心。在320 320的情况下,YOLOv3在28.2 mAP下…

跳板攻击中如何追踪定位攻击者主机(上)

前段时间西北工业大学遭受NAS攻击事件中,TAO在针对西北工业大学的网络攻击行动中先后使用了54台跳板机和代理服务器,主要分布在日本、韩国、瑞典、波兰、乌克兰等17个国家,其中70%位于中国周边国家,如日本、韩国等。 同时&#x…

芯片漫游指南(3)-- UVM通信

目录1.TLM通信1.1 概述1.2 基本概念1.3 分类1.4 端口的使用2. 单向通信2.1 概念2.2 方法2.3 示例3.双向通信3.1 概述3.2 分类3.3 transport4. 多向通信4.1 概述4.2 示例5.通信管道5.1 概述5.2 TLM FIFO5.3 Analysis Port5.4 analysis TLM FIFO5.5 request & response通信管…

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像下(系统+LW)

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像下(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#x…

Springboot内置的工具类之ObjectUtils

在实际业务开发中,有时候经常需要判断对象是否为空、数组是否为空、两个对象是否相等,数组中是否包含某个元素,往数组中追加元素等这些操作,每次都手写太麻烦,然后很多人的选择是封装成util工具类,实际上类…

Golang protobuf

文章目录protobuf 和 grpc 的区别下载工具 protoc为什么要使用 protocprotoc 基本语法基础用法结构体声明protoc生成结构体服务声明生成服务使用生成的服务端使用生成的客户端protobuf 和 grpc 的区别 grpc 是开源的rpc框架 protobuf是编码协议下载工具 protoc https://githu…

人工神经网络/ANN简介

目录 前言 1.什么是训练集、测试集和验证集? 2.人工神经网络和 生物神经元结构对应的理解 3.什么是梯度下降法,在神经网络上如何用于调节权重? 4.为什么神经网络要进行归一化处理? 5.激活函数的形式: 6.NN分类 …

序列模型(自回归模型,马尔可夫模型,因果关系)

李沐老师《动手学深度学习 PyTorch版》课程,小破站也有视频51 序列模型【动手学深度学习v2】_哔哩哔哩_bilibili 主要参考8.1. 序列模型 — 动手学深度学习 2.0.0 documentation 目录 1.基本原理 1.1自回归模型 1.2马尔可夫模型 1.3因果关系 2.训练 3.预测 4…

CMake中link_directories/target_link_directories的使用

CMake中的link_directories命令用于添加目录使链接器能在其查找库(add directories in which the linker will look for libraries),其格式如下: link_directories([AFTER|BEFORE] directory1 [directory2 ...]) 添加路径使链接器应在其中搜索库。提供给…

【云计算与大数据技术】数据分片哈希算法、路由算法、复制算法的讲解(图文解释 超详细)

一、大数据的存储问题 随着结构化数据量和非结构化数据量的不断增长,以及分析数据来源的多样化,之前的存储系统设计已经无法满足大数据应用的需求,对于大数据的存储,存在以下几个不容忽视的问题 容量 - “大容量”通常是指可达P…

Python+Qt相片更换背景颜色窗体程序

程序示例精选 PythonQt相片更换背景颜色窗体程序 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 QTPython是非常经典的窗体编程组合,功能完善,可视化界面美观易维护,这篇博…

fpga实操训练(按键输入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在fpga上面进行按键的输入,要比stm32编写按键输入要容易的多。这里面最主要的工作就是把led输出和按键输入绑定在一起。当然&#xff0…

MySQL MVCC

1.隔离级别 1.1.理论 1.1.1.序列化(SERIALIZABLE) 如果隔离级别为序列化,则用户之间通过一个接一个顺序地执行当前的事务,这种隔离级别提供了事务之间最大限度的隔离; 1.1.2.可重复读(REPEATABLE READ,MySQL默认的隔离级别) 在可重复读在这一隔离级别上,事务不会被看成是一…

代码随想录刷题记录 day42 打家劫舍 1 2 3

代码随想录刷题记录 day42 打家劫舍 1 2 3 参考:代码随想录 198. 打家劫舍 思想 1.dp[i]表示偷取[0,i]房间内获取的最高的金额 2.递推公式 偷取第i号房间时的价值 dp[i]dp[i-2]nums[i]; 不偷取第i号房间时的价值 dp[i]dp[i-1] 所以递推公式 dp[i]Math.max(d…

【Linux】一文简单了解操作系统在硬件中的作用,解析操作系统是做什么的?

目录前言一.操作系统的介绍二.计算机软件体系结构接口各层接口三.操作系统做什么1.不要让CPU打盹多道程序分时系统多任务系统2.设备驱动操作系统对软硬件进行合理的管理,以达到为上层用户提供良好的,稳定的,安全的运行环境的目的!…

AppScan使用教程

一、安装 IBM AppScan 该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-i…

多时点DID实证流程笔记(Aggregate Effects from Public Works: Evidence from India)

文章、数据及stata代码来源: 链接:https://pan.baidu.com/s/1nBvlYGXkV7ednEx93ge1ZQ 提取码:vs5q本文进行的平行趋势检验、异质性检验均与大部分中文文献的处理方式不同,以及Bacon分解的方法对交叠did的潜在偏误进行诊断的做法也是比较新颖的。另外&a…