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

news2024/11/19 13:23:35

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



 


1.项目背景

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

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

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蚁群优化算法优化XGBoost回归模型

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

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

关键代码:

最优参数:

 

6.2 最优参数值构建模型 

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下: 

 

7.2 真实值与预测值对比图

 

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

8.结论与展望

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

 

# ====定义惩罚项函数======
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/641323.html

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

相关文章

AD板子定位孔打孔的两种方式

第一种 注意 直径大小要和 开孔直径一样。 Plated 这个勾打掉 去掉金属壁. 还要X Y坐标 添加一样。 孔位对齐 第二种 选中要开孔的圆 切到机械1层 快捷键 T V B 看效果 总结:第二种最简单

SpringBoot源码-自动装配

一、自动装配原理图 二、入口 springboot的核心注解SpringBootApplication 接着看 SpringBootApplication 注解 截图: 代码: Target({ElementType.TYPE}) //注解的适用范围,Type表示注解可以描述在类、接口、注解或者枚举中 Retention(Ret…

10种常用的数据分析思路

概要 数据分析的思路及其重要,以致于我们总是忽略它,重“术”而轻“道”,但其实应该一视同仁。这篇文章讲了表单分析、用户分析、埋点分析、聚类分析等10种分析方法,先学为敬~ 道家曾强调四个字,叫“道、法、术、器”…

MUR8060PT-ASEMI大电流快恢复二极管80A 600V

编辑:ll MUR8060PT-ASEMI大电流快恢复二极管80A 600V 型号:MUR8060PT 品牌:ASEMI 封装:TO-247 最大漏源电流:80A 漏源击穿电压:600V 引脚数量:2 恢复时间:22ns 正向压降&am…

NIO 基础

3. 文件编程 non-blocking io 非阻塞 IO 1.1 Channel & Buffer channel 类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入&#…

经典文献阅读之--RigidFusion(动态障碍物SLAM)

0. 简介 在真实的SLAM场景中,我们会发现在遇到大量动态障碍物的场景时候,特别容易造成跟丢的问题。传统的解决方法是通过将动态障碍物滤除,而本文《RigidFusion: Robot Localisation and Mapping in Environments with Large Dynamic Rigid …

物联网到底如何实现万物互联?

前言:作为计算机相关专业的你,绝对听说过物联网这个词,它的解释相比你也听过,叫万物互联,也就是所谓的IOT,但是说实话它到底如何实现的万物互联的你可能还真不知道。不是每个物体都有一个网络接口或者实体接…

蓝牙客户端QBluetoothSocket的使用——Qt For Android

了解蓝牙 经典蓝牙和低功耗蓝牙差异 经典蓝牙(Bluetooth Classic):分为基本速率/增强数据速率(BR/EDR), 79个信道,在2.4GHz的(ISM)频段。支持点对点设备通信,主要用于实现无线音频流传输,已成…

响应式数据大屏开发rem、%、vh/vm

前言 响应式数据大屏开发rem、%、vh/vm 我们在开发数据大屏的时候难免会需要解决响应式问题 ,那么响应式是什么呢? 响应式:响应式布局是元素随着屏幕发生宽高大小变化 盒子布局发生变化 通俗的来说: 自适应:元素随着…

设置全局loading

为什么要设置全局loading? 在项目开发过程中,请求接口的时候延迟没有数据,页面感觉狠卡顿,这个时候就要用loading来做一个延迟界面。 但是每个界面都写loading的话就会很复杂,所以今天给大家带来了一个全局loading的…

吴恩达471机器学习入门课程2第2周——手写数字识别(0到9)

手写数字识别的神经网络0-9 1、导包2、ReLU激活函数3 - Softmax函数4 - 神经网络4.1 问题陈述4.2 数据集4.2.1 可视化数据 4.3 模型表示批次和周期损失 (cost) 4.4 预测 使用神经网络来识别手写数字0-9。 1、导包 import numpy as np import tensorflow as tf from keras.mod…

人工智能时代已经开启,它是40年来最重大的技术革命

重读比尔盖茨关于AI的长文《The Age of AI has begun —— Artificial intelligence is as revolutionary as mobile phones and the Internet. 》(开启AI时代:人工智能,比肩智能手机和互联网的革命),有了新的见解&…

电脑卡怎么办?4个方法让电脑流畅运行!

案例:我的电脑刚买的时候使用起来很流畅,但用久了之后就越来越卡,有没有办法可以让电脑流畅运行? 电脑是我们日常生活中必不可少的工具,但有时我们会遇到电脑卡顿的问题,这不仅会影响工作效率,…

VS2017 如何引入动态库(图文教程:libwebsocket为例)

目录 1、把想要的库放进适当的位置;(以libwebsocket动态库为例) 2、将库的头文件包含进来 3、添加对应的库目录 4、链接器——输入中,添加具体的依赖项 5、看当前的动态库,还会依赖其他什么动态库 1、把想要的库放进…

有了这些开源 Icon 库,妈妈再也不担心我的 UI 太丑啦!

Remix Icon Remix Icon 是一套面向设计师和开发者的开源图标库,所有的图标均可免费用于个人项目和商业项目。 与拼凑混搭的图标库不同,Remix Icon 的每一枚图标都是由设计师按照统一规范精心绘制的,在拥有完美像素对齐的基础上,…

分享两个转为数字艺术从业者服务的网站

01 地的数字艺术师、3D设计师、动画制作师和游戏开发人员等人才,为他们提供了多种服务和解决方案。 首先,NewCGer为数字艺术从业者提供了一个交流和学习的平台。该网站上有丰富的行业资讯、技术文章和研究报告等内容,能够及时了解到最新的数…

深度学习应用篇-推荐系统[11]:推荐系统的组成、场景转化指标(pv点击率,uv点击率,曝光点击率)、用户数据指标等评价指标详解

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

Socket TCP/IP协议数据传输过程中的粘包和分包问题

Socket TCP/IP协议数据传输过程中的粘包和分包问题 一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解: 下面对上面的图进行解释: 1.正常情况:如果Socket Client 发送的数据包,在Socket Server…

PowerBI 开发 第23篇:共享数据集

Power BI共享数据集的优点是:只要数据集刷新,那么引用该数据集的报表都会自动刷新,节省了报表数据刷新的时间和算力,缺点是:使用共享数据集的报表,虽然可以新增Measure(Measure仅存在于本地报表中&#xff…

The baby-bust economy “婴儿荒”经济 | 经济学人20230603版社论双语精翻

2023年6月3日《经济学人》(The Economist)封面文章暨社论(Leaders)精选:《“婴儿荒”经济》(“The baby-bust economy”)。 baby-bust即“婴儿荒”(生育低谷)&#xff0c…