Python实现ACO蚁群优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

news2024/10/5 20:21:37

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




1.项目背景

蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法,由意大利学者M. Dorigo, V. Maniezzo和A.Colorni等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径行为而提出的一种基于种群的启发式随机搜索算法"。蚂蚁有能力在没有任何提示的情形下找到从巢穴到食物源的最短路径,并且能随环境的变化,适应性地搜索新的路径,产生新的选择。其根本原因是蚂蚁在寻找食物时,能在其走过的路径上释放一种特殊的分泌物——信息素(也称外激素),随着时间的推移该物质会逐渐挥发,后来的蚂蚁选择该路径的概率与当时这条路径上信息素的强度成正比。当一条路径上通过的蚂蚁越来越多时,其留下的信息素也越来越多,后来蚂蚁选择该路径的概率也就越高,从而更增加了该路径上的信息素强度。而强度大的信息素会吸引更多的蚂蚁,从而形成一种正反馈机制。通过这种正反馈机制,蚂蚁最终可以发现最短路径。

本项目通过ACO蚁群优化算法寻找最优的参数值来优化LSTM回归模型。

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.构建ACO蚁群优化算法优化LSTM回归模型

主要使用ACO蚁群优化算法优化LSTM回归算法,用于目标回归。

6.1 ACO蚁群优化算法寻找的最优参数

关键代码:

最优参数:

 6.2 最优参数值构建模型

6.3 最优参数模型摘要信息 

 

6.4 最优参数模型网络结构 

 

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

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

 7.2 真实值与预测值对比图

 

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

8.结论与展望

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

# ====定义惩罚项函数======
def calc_e(X):
    """计算蚂蚁的惩罚项,X 的维度是 size * 2 """
    ee = 0
    """计算第一个约束的惩罚项"""
    e1 = X[0] + X[1] - 6
    ee += max(0, e1)
    """计算第二个约束的惩罚项"""
    e2 = 3 * X[0] - 2 * X[1] - 5
    ee += max(0, e2)
    return ee



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



# ===定义子代和父辈之间的选择操作函数====
def update_best(parent, parent_fitness, parent_e, child, child_fitness, child_e, X_train, X_test, y_train, y_test):
    """
        针对不同问题,合理选择惩罚项的阈值。本例中阈值为0.1
        :param parent: 父辈个体
        :param parent_fitness:父辈适应度值
        :param parent_e    :父辈惩罚项
        :param child:  子代个体
        :param child_fitness 子代适应度值
        :param child_e  :子代惩罚项
        :return: 父辈 和子代中较优者、适应度、惩罚项
        """

    if abs(parent[0]) > 0:  # 判断取值
        units = int(abs(parent[0])) * 10 + 48  # 赋值
    else:
        units = int(abs(parent[0])) + 48  # 赋值

    if abs(parent[1]) > 0:  # 判断取值
        epochs = int(abs(parent[1])) * 10 + 10  # 赋值
    else:
        epochs = int(abs(parent[1])) + 20  # 赋值

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

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


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

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

相关文章

Layui layer 弹出层的使用【笔记】

Layui layer 弹出层的使用 首先&#xff0c;为了方便直接通过在线cdn引入对应的css和js <!-- 引入 layui.css --> <link href"//unpkg.com/layui2.8.0/dist/css/layui.css" rel"stylesheet"> <!-- 引入 layui.js --> <script src&…

来自非985211的普通本科的Android面试题分享【网络安全】

文中附有详细的面试真题目&#xff0c;文末有我当时刷的面试真题还有一些对我帮助良多的复习资料&#xff0c;特别有用&#xff0c;希望也可以帮大家顺利上岸&#xff0c;顺便攒攒人品&#xff01; 个人的基本情况 本人出生在一个普通家庭&#xff0c;自身学历很一般&#xff…

现在的00后,真是卷死了呀,辞职信已经写好了·····

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;三月份春招我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪23K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了…

【taro react】---- 解决开发环境微信小程序由于主包体积过大不能预览问题

1. 开发环境代码包大小 注意:可以看到此时主包加分包将近 5MB,上传预览将会超出限制!!! 2. 预览结果 报错:代码包大小超过限制,主包资源近3MB,限制最大2MB!!! 3. 解决办法 使用webpack的压缩插件,在开发环境编译的时候进行压缩;进行分包处理,同时依赖也进行分包处…

冲刺618:新品变爆品,品牌如何提炼差异化卖点?

纵观2023年品牌生态&#xff0c;大牌强势、新锐崛起。618大促将至&#xff0c;当前市场营销内容同质化严重&#xff0c;如何占领用户心智&#xff0c;成为品牌营销的“考题”之一。千瓜&#xff5c;谦果营销 结合小红书品牌推广实操经验&#xff0c;沉淀总结品牌差异化卖点提炼…

OpenText Exceed TurboX 桌面虚拟化解决方案整合数据中心、提供高端图形显示

突出特点 2D 和 3D 图形应用程序的卓越性能远程访问&#xff1b; 全球团队的强大协作&#xff1b; 高级安全和集中管理&#xff1b; 从 MicrosoftWindows、Mac、Linux 或 iPad 远程访问。 企业正在寻求整合数据中心&#xff0c;达到减少 IT 支出并提高中央可管理性的目的。 同…

决策反馈均衡器介绍

参考链接&#xff1a;https://www.163.com/dy/article/GK6BBSEB0531PW97.html https://zhuanlan.zhihu.com/p/477141677 DFE全称为Decision Feedback Equalizer&#xff0c;即决策反馈均衡器。它是一种电信通信系统中常用的均衡器&#xff0c;在接收信号端实现等化器、滤波器和…

Selenium入门必备:学会用代码控制浏览器,打开网页、找到元素和退出浏览器

目录 一、前期准备 1、概述 2、学习目标 3、安装 二、selenium的基本使用 1、加载网页&#xff1a; 2、定位和操作&#xff1a; 3、查看请求信息&#xff1a; 4、退出 小结 三、元素定位的方法 学习目标 1、selenium的定位操作 2、元素的操作 小结 四、seleniu…

ThingsBoard 场景联动需求

0、需求 1、概述 当初有个兄弟请我帮他实现一个需求,需求如上,很简单,实现完成后我怕他操作不来,又写了这份文档给他,今天把这个文档的场景发出来,大家也可以学习一下思路 2、登录账号 系统层: 账号:sysadmin@thingsboard.org 密码:sysadmin 3、创建租户 新建租户…

MS COCO数据集介绍

MS COCO数据集介绍 MS COCO全称是Microsoft Common Objects in Context&#xff0c;是由微软开发维护的大型图像数据集&#xff0c;包括不同检测任务&#xff1a; Object Detection&#xff08;[主要处理人、车、大象等]&#xff09; DensePose&#xff08;姿态密度检测&…

12个超好用的免费在线工具,大大提高生产力,建议收藏!

好的工具&#xff0c;能够帮助我们更高效地完成工作&#xff0c;节省时间和精力; 节省出更多的摸鱼时间&#xff01; 本文将介绍12款绝佳的免费效率工具&#xff0c;这些工具可以让你事半功倍&#xff0c;提高工作效率。无论你是一名程序员、设计师、学生还是白领&#xff0c;…

超级秘密文件夹忘记密码的解决办法

超级秘密文件夹是一款非常特殊的文件夹加密软件&#xff0c;它来无影去无踪&#xff0c;在安装后不会留下任何痕迹&#xff0c;只能通过软件热键才能打开。那么如果在使用过程中忘记了密码&#xff0c;这时我们该怎么办呢&#xff1f;下面我们就来了解一下。 首先&#xff0c;我…

【历史上的今天】5 月 18 日:微软反垄断诉讼;携程旅行网上线;谷歌首次公布 TPU

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 5 月 18 日&#xff0c;在 1939 年的今天&#xff0c;彼得格伦伯格&#xff08;Peter Grunberg&#xff09;出生。格伦伯格是一名德国物理学家&#xff0c;是诺…

【jvm系列-12】jvm性能调优篇---GUI工具的基本使用

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

五分钟学会Playwright录制脚本的方法以及语法难点

这篇文章系统地介绍了上手Playwright的方法&#xff0c;但是录制脚本部分讲解不够详尽&#xff0c;今天我在这里重点的介绍一下Playwright 录制脚本的方法来丰满我的Playwright系列技术文章。 Playwright可以使用codegen来录制脚本&#xff0c;使用方式非常简单&#xff0c;只…

Windows 安全基础

Windows 隐藏账号 命令行输入以下命令&#xff0c;可以进行简单的隐藏&#xff08;命令行下不可见&#xff09; net user test$ 123456 /add net localgroup administrators test$ /add 通过注册表隐藏用户&#xff08;实现步骤如下&#xff09;&#xff1a; 要实现很好的…

文生图关键问题探索:个性化定制和效果评价

文生图&#xff08;Text-to-Image Generation&#xff09;是AIGC&#xff08;AI Generated Content&#xff0c;人工智能生成内容&#xff09;的一个主要方向。近年来&#xff0c;文生图模型的效果和质量得到飞速提升&#xff0c;投资界和研究界都在密切关注文生图模型的进展。…

二苯基环辛炔-生物素,DBCO-Biotin点击化学DBCO生物素;CAS:1418217-95-4

中文名称&#xff1a;二苯并环辛炔-生物素 英文名称&#xff1a;DBCO-Biotin CAS&#xff1a;1418217-95-4 分子式&#xff1a;C28H30N4O3S 分子量&#xff1a;502.63 性状&#xff1a;固体粉末 保存方法&#xff1a;-20℃避光避湿保存 点击化学DBCO发生在水中&#xff…

了解这3大特性,再也不担心传输线问题了!

电阻是一个实实在在的物理元器件&#xff0c;通过欧姆定律我们可以知道&#xff0c;电压、电流和电阻三者之间的关系&#xff0c;UI*R。 我们通过一个具体的电路来分析这三者之间的具体关系&#xff0c;请看下面的一张最简单的电路图。这个电路图只有一个电源一个电阻和一些导…

JVM如何安装IBM产品虚拟机openJ9和idea更换jvm

安装前提是卸载掉其他产品或版本的虚拟机防止冲突的发生 1.openJ9是IBM产品的虚拟机 1.1官网下载 1.2openJ9官网介绍 2.下载后的产品 3.点击安装–选择默认安装路径 默认路径–C:\Program Files\Semeru\ 3.1安装完成 4.配置jdk环境变量JAVA_HOME 5.配置Path–作用是在操作…