Python实现ACO蚁群优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

news2024/12/21 22:55:10

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



 


1.项目背景

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

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

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2数据缺失查看

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

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

关键代码:

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%测试集进行划分,关键代码如下:

6.构建ACO蚁群优化算法优化LightGBM回归模型

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

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

关键代码:

最优参数:

 

6.2 最优参数值构建模型

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

 7.2 真实值与预测值对比图

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

8.结论与展望

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

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



# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接: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:  # 判断取值
        n_estimators = int(abs(parent[0])) + 100  # 赋值

 


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

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


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

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

相关文章

全球计算科学和人工智能领域Altair

作为全球计算科学和人工智能领域的领导者 Altair,全新数据分析与人工智能平台 Altair RapidMiner。此次启动仪式以 “数据科学,解码智能未来” 为主题。目的是为了更好的助力本土用户推进高效数字化转型,实现数据分析与人工智能应用的降本增效. 作为全球…

PR视频导出时出现编译影片出错的提示怎么解决?

大家使用PR软件的时候因为版本不兼容等各种原因,导致剪辑好的视频导不出来(如下图所示),这种情况有两种方法可以解决。(我用的版本是2022Pro,电脑需要Win10的系统,如有需要下载的,可…

使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker

引言 MQTT 是一种轻量级的消息传递协议,适用于物联网应用实现设备间通信。 作为一款主流的开源 MQTT Broker,EMQX 能够提供高扩展性、可靠性和安全性的 MQTT 消息传递服务。 借助广泛应用的基础设施即代码(IaC)工具 Terraform&a…

外包干了4年,人直接废了···

有一说一,外包没有给很高的薪资,是真不能干呀! 先说一下自己的情况,大专生,19年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了&#xff0…

【javaScript】Proxy与Object.defineProperty的区别

目录 功能方面的区别:Object.defineProperty对整个对象进行赋值,不会触发set拦截Object.defineProperty对整个对象进行遍历,不会触发get拦截Proxy自定义拦截行为 Proxy的优缺点优点:缺点 Proxy和Object.defineProperty都是JavaScr…

亿发软件:中医药信息一体化解决方案,智慧中药房煎配系统

智慧中药房是中医药服务的一种新模式,随着中医药信息化建设逐渐兴起,湖南远跃顺应时代发展需求,深度分析中医药行业现状,充分发挥研发技术创新,融合运用互联网、物联网、大数据等技术创新成果,研发出中药信…

上市后首份年报,读书郎去年净利下滑94%

又是一年高考逐梦时,寒窗二十四年的读书郎如何克服“偏科”症? 近日,读书郎教育控股有限公司(下称“读书郎”,02385.HK)交出了上市后的首份年报。 3月29日,财报公布的首个交易日,其股价下跌0.27%&#xf…

起点,而非终点——我的创作纪念日

机缘 我注定遇见CSDN. 作为一位oier,在学习算法,查找题解的时候,第一个看到的,总是CSDN。 于是,我加入了CSDN这个家庭。 茫茫然然,带着无限的憧憬,我写下了第一篇文章:《你好,CSDN》 我的C…

什么是融合CDN?融合CDN的优势和常见的调度模式有哪些?

什么是融合CDN? 为了理解什么是融合CDN,我们先了解什么是CDN。CDN是一个地理分布的边缘服务器网络,其目标是提供更快、可靠的互联网内容交付。CDN通过在网络边缘缓存互联网内容来实现这一点,从而减少数据源和最终用户之间的物理距…

“入职半年,绩效背了C”,谈谈「绩效管理」的误区及对策

职场打工人上班吃维C,绩效却背C,苦C久矣! 又到年中“考核季”,被绩效考核折磨到“头秃”的职场打工人们,选择将情绪释放到社交平台。 一位朋友分享了自己绩效被打C的经历:“茶饭不思,感觉自己很…

数学建模经历-程序人生

引言 即将大四毕业(现在大三末),闲来无事(为了冲粽子)就写一篇记录数学建模经历的博客吧。其实经常看到一些大佬的博客里会有什么"程序人生"、"人生感想"之类的专栏,但是由于我只是一个小趴菜没什么阅历因此也就没有写过类似的博客…

一文详解IPv4与IPv6协议

前段时间的工作大多与通信协议相关,随着协议相关工作的不断深入,相关数据包的分析占据了不少工作时间。在数据报文分析中,发现大学期间IP协议内容已经重新还给了老师,相关知识完全没有了印象,这篇文章算是一篇复习文&a…

Day05 04-MySQL分库分表介绍

文章目录 第十七章 MySQL分库分表17.1 什么是分库分表17.2 为什么要分库分表17.3 垂直切分17.3.1 垂直分库17.3.2 垂直分表 17.4 水平切分17.4.1 水平分库17.4.2 水平分表17.4.3 常见的水平切分规则 第十七章 MySQL分库分表 17.1 什么是分库分表 MySQL数据库常见的优化方案中…

新的管理中心应用

大家好,才是真的好。 Notes/Domino 14 Drop1如约而至,让我们有了很多内容要写。首先是管理新特性,就像上篇和大家介绍的,感受最直接的就是新的管理中心应用AdminCentral。 以目前的Drop1环境来看,管理中心应用主要功…

plus.runtime.version总是13.8.4

引言 最近在uniapp中使用到了plus.runtime.version,但是在开发环境下一直无法获取到真正的版本号,他的值一直都是13.8.4,在全局进行搜索也没有发现哪里设置了13.8.4,后来查阅了相关资料才知道这并不是自己写错了。 场景复现&…

你知不知道ai如何绘画的

有没有想要自己能绘画一幅有艺术感的画呢?想自己也能将自己所想的事、物或景绘画出来呢?其实你不用担心你的绘画功底不行,因为现在有一门ai绘画的技术,它可以将你提供的信息用智能技术自动绘画,你也可以把它当做一门新…

数字IC前端学习笔记:仲裁轮询(一)

相关文章 数字IC前端学习笔记:LSFR(线性反馈移位寄存器) 数字IC前端学习笔记:跨时钟域信号同步 数字IC前端学习笔记:信号同步和边沿检测 数字IC前端学习笔记:锁存器Latch的综合 数字IC前端学习笔记&am…

【面试必问】Spring核心之面向切面编程(AOP)

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Java面试专题&#…

【数据结构】八大排序算法

目录 一、直接插入排序 二、希尔排序 三、选择排序 四、堆排序 五、冒泡排序 六、快速排序 1、递归版本 1.1 hoare 法 1.2 挖坑法 1.3 前后指针法 2、非递归版本 3、快速排序的优化 3.1 三数取中 3.2 小区间优化 七、归并排序 1、递归版本 2、非递归版本 八、计数排序 …

【Spring Security】的RememberMe功能流程与源码详解

文章目录 前言原理 基础版搭建初始化sql依赖引入配置类验证 源码分析 进阶版集成源码分析疑问1疑问2 鉴权 升级版集成初始化sql配置类验证 源码分析鉴权流程 扩展版 前言 之前我已经写过好几篇权限认证相关的文章了,有想复习的同学可以查看【身份权限认证合集】。今…