Python实现HBA混合蝙蝠智能算法优化循环神经网络回归模型(LSTM回归算法)项目实战

2023-11-10

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



 


1.项目背景

蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度。该算法具有实现简单、参数少等特点。

混合蝙蝠算法针对基本蝙蝠算法存在收敛速度慢,易陷入局部最优,求解精度低等缺陷,提出一种融合局部搜索的混合蝙蝠算法用于求解无约束优化问题。该算法利用混沌序列对蝙蝠的位置和速度进行初始化,为全局搜索的多样性奠定基础;融合Powell搜索以增强算法的局部搜索能力,加快收敛速度;使用变异策略在一定程度上避免算法陷入局部最优。

本项目通过HBA混合蝙蝠智能算法优化循环神经网络回归模型。

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2 数据缺失查看

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

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

关键代码:

3.3 数据描述性统计

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

关键代码如下:

 

4.探索性数据分析

4.1 y变量直方图

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

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

4.2 相关性分析

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

5.特征工程

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

关键代码如下:

5.2 数据集拆分

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

5.3 数据样本增维

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

6.构建HBA混合蝙蝠优化算法优化LSTM回归模型

主要使用HBA混合蝙蝠优化算法优化LSTM回归算法,用于目标回归。

6.1 HBA混合蝙蝠优化算法寻找的最优参数   

最优参数:

6.2 最优参数值构建模型

 

6.3 最优参数模型摘要信息

  

 6.4 最优参数模型网络结构

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

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

7.2 真实值与预测值对比图

 

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

8.结论与展望

综上所述,本文采用了HBA混合蝙蝠智能优化算法寻找循环神经网络LSTM算法的最优参数值来构建回归模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

# 开始迭代
t = 0
for t in range(N_gen):
    print('***********************当前迭代次数为:', t + 1, '******************************')

    # 对所有蝙蝠/位置进行循环
    for i in range(N_pop):
        Q[i] = np.random.uniform(Qmin, Qmax)  # 生成随机数
        v[i] = v[i] + (Sol[i] - best) * Q[i]  # 速度
        S[i] = Sol[i] + v[i]  # 位置


# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ
 
# 提取码:thgk
 
# *****************************************************************************


# y变量分布直方图
fig = plt.figure(figsize=(8, 5))  # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df['y']  # 过滤出y变量的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')
plt.xlabel('y')

 更多项目实战,详见机器学习项目实战合集列表:

机器学习项目实战合集列表_机器学习实战项目_胖哥真不错的博客-CSDN博客


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python实现HBA混合蝙蝠智能算法优化循环神经网络回归模型(LSTM回归算法)项目实战 的相关文章

随机推荐

  • 校园二手市场交易平台(JAVA,SSM,BOOTSTRAP,JSP,AJAX,MYSQL)

    今天 我们发布一套 校园二手市场交易 系统使用技术包含JAVA SSM BOOTSTRAP JSP AJAX MYSQL 这套系统后台框架使用SSM 前台框架为BOOTSTRAP 数据库使用MySql 这套系统包含完整的源代码和数据库脚本
  • 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置(转载)

    载自http support microsoft com kb 224071 zh cn 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置 参考概要本文描述如何更改任何
  • Element的message消息提示每次只出现一个

    使用element的message消息提示框有时出现这种重复弹出情况 解决办法 if document getElementsByClassName el message length 0 也就是当前没有提示弹窗 that message
  • 汽车变排量空调压缩机的工作原理

    不同于定排量压缩机 fixed displacement compressor FDC 变排量压缩机 variable displacement compressor VDC 可自动改变其泵送能力以满足空调的需求 当车厢温度高时 它会提高其
  • 《Perl语言入门》读书笔记(四)子程序

    1 子程序 1 1 定义子程序 使用关键字sub开头 在写上子程序名 字母 数字和下划线组成 不能以数字开头 大括号框柱子程序主体 子程序可以定义在文件的任意位置 为了方便代码阅读 一般建议放在开头或结尾处 sub marine n 1 全
  • WebSocket的使用指南---前端

    1 WebSocket概述 WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术 WebSocket 通信协议于2011年被IETF定为标准RFC 6455 WebSocketAPI 被 W3C 定为标
  • String

    String是一个对象 不是基本数据类型 String的特点 字符串对象一旦初始化 便不能被修改 改变的只是引用型变量的指向 例如 String str abc String str ert abc 依然存在 只是str的指向变了 Stri
  • Mysql系列 - 第4天:DDL常见操作汇总

    这是Mysql系列第4篇 环境 mysql5 7 25 cmd命令中进行演示 DDL Data Define Language数据定义语言 主要用来对数据库 表进行一些管理操作 如 建库 删库 建表 修改表 删除表 对列的增删改等等 文中涉
  • 机器学习中的特征变量及处理总结

    文章目录 1 定性特征变量 1 1 定类变量处理 1 2 定序变量处理 2 定量特征变量 3 总结 牢记一句话 数据和特征决定了机器学习的上限 而模型和算法只是逼近这个上限而已 机器学习的根本目标 就是用数据的特征变量去对目标变量进行预测
  • Github 榜首!B 站疯传!程序员思维导图 48 张!!!

    介绍在下面 整个内容包括 程序员史上最强编程思维导图 48 张 800 份求职简历模板 我写的 图解算法小册 解析 150 道高频算法面试题目 25k star Github 榜首项目 资料获取地址 无套路 直接可以下载 Github 榜首
  • Jmeter快速上手之接口测试

    目录 1 前言 2 简介 3 安装 4 环境变量 4 1 Windows环境 4 2 Mac环境 5 启动程序 6 目录说明 7 操作示例 7 1 Get请求 7 2 Post请求 7 3 依赖请求 1 前言 压测工具 Jmeter 除了可
  • 什么是接口?

    1 什么是接口 接口是一种特殊的内部类 它里面的所有方法都没有实现 2 接口的特点 1 接口中成员默认访问修饰符都是public 即便你不写 2 定义接口必须interface关键字完成 3 接口中可以定义变量 但是变量必须有固定的修饰符修
  • JUC并发编程--------线程安全篇

    目录 什么是线程安全性问题 如何实现线程安全 1 线程封闭 2 无状态的类 3 让类不可变 4 加锁和CAS 并发环境下的线程安全问题有哪些 1 死锁 2 活锁 3 线程饥饿 什么是线程安全性问题 我们可以这么理解 我们所写的代码在并发情况
  • java自引用/类的递归调用问题

    Java的自引用问题 什么是自引用 递归调用 代码示例和分析 自引用情况 类比C 什么是自引用 递归调用 在编写代码的过程中 我们经常看到类中出现该类的声明 示例 class A int data A a 这种情况就被称为自引用 代码示例和
  • Android架构项目代码结构规范--组件化代码

    前言 组件化和插件化有什么区别 虽说网上有很多文章但是讲清的聊聊无几 这也是这篇文章的由来 大方向 组件化是一个项目主管设计管理项目架构方案 而插件化有商务上的合作和局部功能热更换修复等 小方向 如果是公司app合作 组件化也就是插件化作为
  • CLion Bug集合1:windows下导入openssl库方法以及踩过的坑

    系统 win10 64位 工具链 MinGW IDE CLion openssl库下载 下载方法 主要有两种方式 本文主要讲解方式1 方式1 下载地址 2022 6 1补充 该方法的动态库是MinGW64位用的 32位见方法2 方式2 编译
  • linux常用命令案例总结wc,top,free,df -h,head,sed,awk,netstat -antp,ps -aux, ethtool eth0

    1 wc的使用 统计一个目录下的文件个数 root localhost etc cd var log root localhost log ll grep wc l 53 root localhost log 拓展 关于命令wc的使用 wc
  • 使用冻结层进行迁移学习

    使用冻结层进行迁移学习 在yolov5的训练过程中 作者介绍了如何使用冻结层实现迁移学习的策略 具体可以参考官方话题 Transfer Learning with Frozen Layers Issue 1314 ultralytics y
  • JS中的Date数据类型

    JS的Date数据类型 在JavaScript中 Date数据类型用于处理日期和时间 它可以表示自1970年1月1日00 00 00 UTC 协调世界时 以来的毫秒数 Date对象在许多应用程序中都非常有用 例如在Web应用程序中显示当前时
  • Python实现HBA混合蝙蝠智能算法优化循环神经网络回归模型(LSTM回归算法)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 视频讲解 如需数据 代码 文档 视频讲解可以直接到文章最后获取 1 项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法 是一种搜索全局最优解的有效方法 该算法基于迭代优