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

news2025/1/11 3:56:42

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




1.项目背景

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

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

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2数据缺失查看

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

从上图可以看到,总共有11个变量,数据中无缺失值,共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蚁群优化算法优化CATBOOST回归模型

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

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

关键代码:

每次迭代的过程数据:

 最优参数:

6.2 最优参数值构建模型

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

 7.2 真实值与预测值对比图

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

8.结论与展望

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

# ====定义惩罚项函数======
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:  # 判断取值
        depth = int(abs(parent[0])) + 3  # 赋值
    else:
        depth = int(abs(parent[0])) + 5  # 赋值

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

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

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


 

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

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

相关文章

Bark(Suno AI) 搭建及使用

前言 Bark 是由Suno AI创建的基于转换器的文本到音频模型。Bark 可以生成高度逼真的多语言语音以及其他音频 - 包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流,如大笑、叹息和哭泣。 1: 环境 win10 rtx 3060TI bark 下载地址 https://github.com/sun…

Jenkins配置Powershell脚本,通过脚本控制开发/测试服务器

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:无尽的折腾后,终于又回到了起点,工控,我来了 !序言 因为需要在Windows上编译和部署程序,因此需要借助PowerShell的脚本力量完成这些事情。 目标…

3年工作经验裸辞,有点后悔了

2019年毕业,现在有3年的软件测试工作经验,刚毕业前半年在一家知名上市公司,后面则进入一家传统行业公司待到现在2年半。 由于看不到技术成长以及其他原因,上上周辞职了,目前交接中,下个月中旬就得离开了&a…

Call for Papers丨第十七届全国知识图谱与语义计算大会,AI Open联合征稿

第十七届全国知识图谱与语义计算大会(CCKS 2023)征稿中,并与《AI Open》开展联合征稿,征稿截止日期为2023年6月2日。 全国知识图谱与语义计算大会(China Conference on Knowledge Graph and Semantic Computing&#x…

推荐一个AI导航网站 - 收录的都是热门AI工具

AI导航 | AI工具 | AI之旅导航是只收录最新最实用AI工具的人工智能导航网站 最近半年使用了大量的AI人工智能工具,收藏夹已经收藏不过来了。 所以搭建这个导航网站,管理所有收藏的热门AI网站,同时像大家分享, 网站没有任何广告…

esp32 下蓝牙播放音乐歌词的获得

以esp32 或者esp8266 作为蓝牙音乐接收端是可以获取到歌词的。 走了不少弯路,这方面还是资料有缺失,其实这是很简单的事情。 使用了A2DP这个库,GitHub - pschatzmann/ESP32-A2DP: A Simple ESP32 Bluetooth A2DP Library (to implement a M…

微信外h5跳转小程序3中方式

1.转短链接跳转小程序(支持微信内外) 目前限制50wc次 先转短链接 文档:获取scheme码 | 微信开放文档 2.微信公众号h5内跳转小程序(支持微信内) 微信公众号h5页面跳转微信小程序_程序007的博客-CSDN博客 3.使用云函…

对Android 说Hello ——Qt For Android

1. Qt 安卓环境搭建 平台:Qt5.15.2 官网教程: Getting Started with Qt for Android | Qt 5.15 网上的教程: qt5.15.2配置android_加油吧,小杜的博客-CSDN博客 注意 :注意ndk的路径中不能有空格,我之前…

【AIGC】AI欺诈,做好以下几点,无需忧虑

文章目录 前言列举几种AI欺诈的形式以及其识别方法1.AI深度学习生成的假视频、假图片2.AI自动生成的德文或语音3.AI自动注册账号和刷数据4.AI智能防御机制 如何预防?1.提高公众警惕性2.发展AI监测技术3.加强关键领域的人工审核4.完善法律法规5.国际合作与交流6.开源…

图表控件LightningChart .NET v.10.4.1已经发布!新增DataCursor功能、ZoomBar自定义控件

LightningChart.NET原名LightningChart Ultimate SDK,是一款高性能WPF和Winforms图表,可以实时可视化多达1万亿个数据点。LightningChart完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的…

bmp转jpg怎么转?bmp转换jpg的几个方法

bmp转换jpg的几个方法~什么是BMP呢?BMP是位图文件格式的一种,全称为Bitmap(位图),是一种基于像素的图像文件格式。BMP是Windows操作系统中最常用的图像格式之一,通常以.bmp或.dib作为文件扩展名。BMP文件格…

LabVIEWCompactRIO 开发指南32 确保无损数据传输

LabVIEWCompactRIO 开发指南32 确保无损数据传输 如果无损数据传输很重要,或者如果要将数据从多个I/O通道传输到同一DMA FIFO,则必须能够监控DMA机制的状态并对发生的任何故障做出反应。在FPGADMA写入节点上,超时通常表示DMA缓冲器已满。当…

华为OD机试之处理器问题(Java源码)

处理器问题 题目描述 某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器,编号分别为0、1、2、3、4、5、6、7。 编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中的处理器不能通信。 如下图所示。…

IEEE独立出版 | 第七届计算机科学与智能控制国际会议(ISCSIC 2023)

会议简介 Brief Introduction 第七届计算机科学与智能控制国际会议(ISCSIC 2023) 会议时间:2023年10月27日-29日 召开地点:中国南京 大会官网: ISCSIC 2023-2023 7th International Symposium on Computer Science and Intelligent Control(I…

大型企业建设财务共享中心需要重视的5个核心要素

随着数字化技术和财务共享的发展,财务共享建设正逐步深化。为发挥企业财务共享中心的最大价值,用友网络财务共享专家唐勇提出了5个关键点,需要企业重视: 从整体财务职能转型的视角规划财务共享中心的定位: 企业在规划…

为年迈母亲打造的“亲情关怀”视频聊天软件

写在前面 母亲的眼神越来越不好了,长期干农活的手也愈加粗糙,智能手机本是一个平常之物,她确无缘使用,现在仍在不断更换着“翻盖手机”。为了能让她绕开微信视频聊天那些繁琐而容易点错的功能,程序员的我“开发”下面…

如何通过QQ进行手机号溯源

0x01 通过在线网址查询 Q绑在线查询:http://2k.24kz.cn/ 0x02 非数据库查询方法 如果上述的网址查询不到信息的号。会提示说没有找到 可能说明数据库中并无该qq号所绑定手机号的信息 开始正题: 第一步:点击添加账号,复制其QQ账…

Prompt Engineering | 文本转换prompt

LLM非常擅长将输入转换成不同的格式,例如多语种文本翻译、拼写及语法纠正、语气调整、格式转换等。 文章目录 1、文本翻译1.1、中文转西班牙语1.2、识别语种1.3、多语种翻译1.4、翻译正式语气1.4、通用翻译器 2、语气 / 风格调整3、格式转换4、拼写及语法纠正5、一个…

2021上半年

2021上半年 a 程序计数器pc d 更正一下:都是支持流水线技术的 DMA传送数据不需要CPU干预,和io设备并行工作(存储周期) c c c b c 关于TLS: B B D A D 保护的是:软件程序和文档 D B C B 前向传播&#xff1…

Containerd+Kubernetes搭建k8s集群

ContainerdKubernetes搭建k8s集群 文档说明安装软件的版本和下载地址环境说明服务器准备负载均衡IP地址准备 安装步骤环境设置关闭防火墙关闭SELinux关闭swap分区设置主机名称解析设置主机名称加载 br_netfilter 模块桥接的IPv4流量传递到iptables升级操作系统内核导入elrepo g…