Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

news2024/9/27 19:21:08

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

1.项目背景

蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,蝴蝶接收/感知并分析空气中的气味,以确定食物来源/交配伙伴的潜在方向。

蝴蝶利用它们的嗅觉、视觉、味觉、触觉和听觉来寻找食物和伴侣,这些感觉也有助于它们从一个地方迁徙到另一个地方,逃离捕食者并在合适的地方产卵。在所有感觉中,嗅觉是最重要的,它帮助蝴蝶寻找食物(通常是花蜜)。蝴蝶的嗅觉感受器分散在蝴蝶的身体部位,如触角、腿、触须等。这些感受器实际上是蝴蝶体表的神经细胞,被称为化学感受器。它引导蝴蝶寻找最佳的交配对象,以延续强大的遗传基因。雄性蝴蝶能够通过信息素识别雌性蝴蝶,信息素是雌性蝴蝶发出的气味分泌物,会引起特定的反应。

  通过观察,发现蝴蝶对这些来源的位置有非常准确的判断。此外,它们可以辨识出不同的香味,并感知它们的强度。蝴蝶会产生与其适应度相关的某种强度的香味,即当蝴蝶从一个位置移动到另一个位置时,它的适应度会相应地变化。当蝴蝶感觉到另一只蝴蝶在这个区域散发出更多的香味时,就会去靠近,这个阶段被称为全局搜索。另外一种情况,当蝴蝶不能感知大于它自己的香味时,它会随机移动,这个阶段称为局部搜索。

本项目通过BOA蝴蝶优化算法优化LSTM回归模型。

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.构建BOA蝴蝶优化算法优化LSTM回归模型

主要使用BOA蝴蝶优化算法优化LSTM回归算法,用于目标回归。

6.1 BOA蝴蝶优化算法寻找最优参数值

最优参数:

6.2 最优参数值构建模型 

编号

模型名称

参数

1

LSTM回归模型

units=best_units

2

epochs=best_epochs

6.3 最优参数模型摘要信息

6.4 最优参数模型网络结构

6.5 最优参数模型训练集测试集损失曲线图

7.模型评估

7.1评估指标及结果 

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

模型名称

指标名称

指标值

测试集

LSTM回归模型

R方

0.9262

均方误差

2058.5686

解释方差分

0.9262

绝对误差

32.9346

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

关键代码如下:  

 

7.2 真实值与预测值对比图

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

8.结论与展望

综上所述,本文采用了BOA蝴蝶优化算法寻找LSTM算法的最优参数值来构建回归模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。


# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:

链接:https://pan.baidu.com/s/1Ex3ys6JTbT4zoyyKbnXLkw 
提取码:r10d

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

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

相关文章

区别于传统家!三翼鸟定制智慧家电家居一体化场景

在这个科技创新、智能AI主导的时代,寻求更便捷智慧、舒心适宜、一体化的居家场景,成为一个时代的命题和竞赛,也是家居行业共同奔赴的使命。在纷繁复杂的竞争格局和方向答案中,一条清晰坚定的路径正在显露出来…… AWE前一天&…

关于联软UniAccess安全助手流氓行为,导致代码编译失败

今天公司里安装了这个东西, 就是监控软件 一举一动都被监控 早上我安装完 然后我继续工作编译代码, 用的clang.exe emscripten 编译webassembly项目 老是报错,而且次次报错 不一致 很奇怪的错误 我就想是不是我同步远端分支的原因, 折腾了好久, 发现已经的仓库也编…

sincecon品牌国货之光采用的聚甲基丙烯酸羟乙脂能够防护眼睛

sincecon品牌含硅半年抛华丽登场各种风格色系设计全都一网打尽给你挑花眼的囤货快乐, sincecon是KOOL旗下的一个品牌,品牌较大,且口碑很好,回头客很多。sincecon美瞳采用的聚甲基丙烯酸羟乙脂能够防护眼睛,不刺激眼睛,对眼睛的好处很大。

JavaScript 数组去重的方法12 种方法

数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的 10 种,面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重,一…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中,如果定义一个常量String和new出一个String对象,是不同的: String s1 "zhang" String s2 new String("zhang") 因为在Java看来,s1只是一个常量,会放在…

深入浅出讲解Python字符串格式化

字符串格式化操作符(%),非常类似于C 语言里面的printf()函数的字符串格式化,甚至所用的符号都一样,都用百分号(%),并且支持所有printf()式的格式化操作。语法如下: format_string % string_to_convert format_string为…

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、Py…

【深度学习笔记】7_7 AdaDelta算法

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 7.7 AdaDelta算法 除了RMSProp算法以外,另一个常用优化算法AdaDelta算法也针对AdaGrad算法在迭代后期可能较难找到有用解的…

了解关键字

关键字 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词) HelloWorld案例中,出现的关键字有 class、public 、 static 、 void 等,这些单词已经被Java定义好了。 特点:全部关键字都…

“多彩非遗 用爱编织”社区志愿者心理解压活动

为提升志愿者心理健康水平,帮助他们及时疏导情绪、缓解生活中的压力,构筑心理防线,促进身心健康,引导志愿者以积极的心态面对服务和生活中的压力,2月28日海滨街社工站在海滨街道西运社区开展了“多彩非遗 用爱编织”社…

力扣● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

● 300.最长递增子序列 1.dp数组含义。dp[i]:以nums[i]为结尾的递增子序列的最大长度。 注意一定是以nums[i]结尾,如果dp[i]定义错误的话,暴力也不知道咋整。 2.递推公式。这道题与背包的单词划分比较像,一个单层循环是弄不出来…

AJAX 02 案例、Bootstrap框架

AJAX 学习 AJAX 2 综合案例黑马 API01 图书管理Bootstrap 官网Bootstrap 弹框图书管理-渲染列表图书管理-添加图书图书管理-删除图书图书管理 - 编辑图书 02 图片上传03 更换图片04 个人信息设置信息渲染头像修改补充知识点:label扩大表单的范围 AJAX 2 综合案例 黑…

深入剖析Mysql事务和Spring事务,mongodb面试题2024

注意max_trx_id并不是m_ids中的最大值,事务id是递增分配的。比方说现在有id为1,2,3这三个事务,之后id为3的事务提交了。那么一个新的读事务在生成ReadView时,m_ids就包括1和2,min_trx_id的值就是1&#xff…

OSG编程指南<二十>:OSG路径动画

1、路径动画 如果读者耐心地读到这里,已经对路径动画不陌生了。因为前面很多处已经涉及路径动画,在很多示例中也用到了路径动画。路径动画就是按一定的插值方式生成路径,物体对象按照生成的路径或预先指定的路径来完成相应的动作的动画。 在 OSG 中,管理路径动画的核心类主…

数据结构——循环链表,双向链表,线性表和有序表的合并详解

目录 1.循环链表 1.带尾指针循环链表的合并 代码示例: 2.双向链表 代码示例: 1.双向链表的插入 ​代码示例: 2.双向链表的删除 代码示例: 3.单链表,循环链表,双向链表时间效率的比较 4.顺序表和链…

LSM树(Log-Structured-Merge-Tree)

学习笔记:参考LSM树详解 - 知乎 (zhihu.com) NoSQL(HBase,LevelDB,RocksDB)采用LSM树 核心:利用顺序写来提高性能,但因为分层(内存和文件两部分)的设计会降低读性能。//牺牲小部分读性能来换高…

Hack The Box-Codify

目录 信息收集 rustscan nmap dirsearch WEB 提权 get user get root 信息收集 rustscan ┌──(root㉿ru)-[~/kali/hackthebox] └─# rustscan -b 2250 10.10.11.239 --range0-65535 --ulimit4500 -- -A -sC .----. .-. .-. .----..---. .----. .---. .--. .-. …

漏洞复现-金蝶系列

漏洞复现-金蝶系列 Apusic 金蝶天燕Apusic 应⽤中间件代码命令执⾏金蝶云星空RCE金蝶云OA星空 CommonFileserver 任意文件读取金蝶云星空 管理中心介绍⾦蝶 EAS 系统存在⽬录遍历金蝶EAS myUploadFile任意文件上传实战之金蝶RCE上传绕过金蝶云金蝶云SaveUserPassport存在反序列…

音视频实战---读取音视频文件的AAC音频保存成aac文件

1、使用avformat_open_input函数打开音视频文件 2、使用avformat_find_stream_info函数获取解码器信息。 3、使用av_dump_format设置打印信息 4、使用av_init_packet初始化AVPacket。 5、使用av_find_best_stream查找对应音视频流的流下标。 6、使用av_read_frame读取音视…

移动硬盘分区误删?别担心,数据恢复来帮忙!

在日常使用移动硬盘的过程中,有时会因为各种原因导致分区被误删。这种情况一旦发生,很多人会感到惊慌失措,担心数据丢失无法找回。然而,只要及时采取正确的数据恢复措施,大多数情况下都能够成功恢复误删的分区和数据。…