Python实现ACO蚁群优化算法优化Catboost分类模型(CatBoostClassifier算法)项目实战

news2024/11/19 20:37:36

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




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工具的plot()方法绘制直方图:

4.2 y=1样本x1变量分布直方图

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

4.3 相关性分析

 

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

5.特征工程

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

关键代码如下:

5.2 数据集拆分

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

6.构建ACO蚁群优化算法优化CATBOOST分类模型

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

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

关键代码:

每次迭代的过程数据:

 

最优参数:

 

6.2 最优参数值构建模型

 

7.模型评估

7.1 评估指标及结果

评估指标主要包括准确率、查准率、查全率、F1分值等等。

从上表可以看出,F1分值为0.9652,说明模型效果较好。

关键代码如下:

 7.2 分类报告

从上图可以看出,分类为0的F1分值为0.96;分类为1的F1分值为0.97。

7.3 混淆矩阵

从上图可以看出,实际为0预测不为0的 有2个样本;实际为1预测不为1的 有5个样本,整体预测准确率良好。

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/554003.html

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

相关文章

Java | 一分钟掌握定时任务 | 7 - ElasticJob分布式定时任务

作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 前言 ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案。 它通过…

pointNet、pointNet++算法学习笔记

算法结构 原理解析 已知: N个点,每个点的信息x,y,z。 MLP:全连接网络,输入层,隐藏层,输出层。 原理: (1)第一步 MLP 对每个点进行MLP操作,即:3–>MLP(3,C…

Spring MVC文件上传处理详解

Spring MVC文件上传处理详解 Spring MVC是Java Web开发中非常常用的框架之一,它提供了许多方便的功能。其中,文件上传是Web开发中常用的功能之一,本文将介绍如何使用Spring MVC处理文件上传以及相关代码实现。 文件上传的基本原理 在Web开发…

HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库

给北大打工,实现官网首页动态图标效果_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ys4y1c7oh/?spm_id_from333.1007.top_right_bar_window_default_collection.content.click&vd_source924f5dad6f2dcb0a3e5dca4604287ecd(本篇笔记操作方法…

Java 基础语法学习笔记

目录 一、Java语言概述 1.1 Java 的出现 1.2 Java的主要特性 1.3 Java语言的特点 1.4 Java语言的核心机制 1.5 Java语言的环境搭建 二、第一个Java程序 2.1 需要注意的问题 2.2 注释(comment) 2.3 注意点: 2.4 Java API 的文档 2.5 第一个 Jav…

python+django智慧办公hr招聘辅助管理系统vue

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,智慧办公hr招聘辅助管理系统当然也不能排除在外。智慧办公hr招聘辅助管理系统是以实际运用为开发背景,运用软件工程…

深度学习框架-Keras:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术,已经在许多领域中得到广泛的应用,如计算机视觉、自然语言处理、语音识别等。在深度学习中,深度学习框架扮演着重要的角色。Keras是一种广泛使用的深度学习框架,它在许多方面都有所改进&#xff0c…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心,可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络,从用户行为角度来看,移动互联网广义上是指用…

openldap介绍以及使用

参考文献:openldap介绍和使用 基本概念 官网:https://www.openldap.org 官方文档:https://www.openldap.org/doc LDAP是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的…

目标检测 YOLOv5 开源代码项目调试与讲解实战土堆 课程笔记

P4 P5 主要讲解了 detect.py 中的参数的使用 如何利用 YOLOv5 进行预测(一)_哔哩哔哩_bilibili 如何利用YOLOv5进行预测(二)_哔哩哔哩_bilibili (一)weight:代码如下 parser.add_argument(--w…

VTKmimics Calculate Parts

前言:本博文主要研究mimics中Calculate Parts所采用的方法以及VTK中三维重建的方法,希望对各位小伙伴有所帮助,谢谢! mimics-Calculate parts - Interpolation Gray Interpolation 灰度值插值是一种真正的3D插值,它考…

【C++学习第十一讲】C++数据类型

文章目录 一、编程语言中的数据类型1.1 整型(Integer)1.2 浮点型(Floating-Point)1.3 字符型(Character)1.4 布尔型(Boolean)1.5 数组(Array)1.6 字符串&…

TitanIDE:环境安装部署教程

随着市场需求的迅速增长和技术的不断发展,云原生不仅仅是一种技术,更是一种思想。它通过容器化、微服务化、自动化等技术手段,推动了应用程序设计和交付的转变,使应用程序的开发、测试、部署和管理变得更加高效和灵活。 随着市场需…

【多线程】| 线程冲突解决方案

目录 🦁 线程同步1.什么是线程冲突?2.什么是线程同步?3.解决线程同步的方案3.1语法结构3.2synchronized使用 🦁 synchronized详细用法1. 使用this作为线程锁对象1.1 语法结构:1.2 使用说明 2. 使用字符串作为线程对象锁…

lwIP更新记04:TCP 初始序列号

从 lwIP-2.0.0 开始,可以自定义 TCP 报文段的初始序列号。 TCP 报文段首部有一个序列号字段,它是一个32位的计数器,从 0 到 4294967295,它的值为当前报文段中第一个数据的字节序号。TCP 在建立连接的时候需要初始序列号&#xff…

JVM系列-第11章-垃圾回收相关概念

垃圾回收相关概念 System.gc() 的理解 在默认情况下,通过System.gc()者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声…

小航助学2022年NOC初赛图形化(小高组)(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:C 第1题如果要控制所有角色一起朝舞台区右侧移动,下面哪个积木块是不需要的? A…

微签助力中融基金电子文件安全高效签章

中融基金重安全,炼丹炉里炼微签 这次讲一个微签在炼丹炉里炼出了火眼金睛的故事。 先看一个数字。 金融隐私泄露事件大约以每年35%的数据在增长。 数字来自《中国银行保险报》与亚信网络安全产业技术研究院发布的《金融行业网络安全白皮书》。 大数据时…

「车型分析」控制系统典型应用车型 —— 辊筒AGV

辊筒AGV (Roller conveyor ) 是一种常见的AGV机器人类型,它利用辊筒和轮子在巷道中实现货物的搬运和运输,可实现托盘物品的卸载和运输等功能, 具有更高的灵活性、适应性和效率。本文将基于这款市场上常见的AGV进行一次简单的介绍。 1 车型介绍: 辊筒AGV…

深度学习中必备的算法:神经网络、卷积神经网络、循环神经网络

深度学习是一种新兴的技术,已经在许多领域中得到广泛的应用,如计算机视觉、自然语言处理、语音识别等。在深度学习中,算法是实现任务的核心,因此深度学习必备算法的学习和理解是非常重要的。 本文将详细介绍深度学习中必备的算法…