Python实现猎人猎物优化算法(HPO)优化Catboost分类模型(CatBoostClassifier算法)项目实战

news2024/11/27 13:46:57

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




1.项目背景

猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的优化搜索算法。受到捕食动物(如狮子、豹子和狼)和猎物(如雄鹿和瞪羚)的行为的启发,他们根据猎人和猎物的位置移动方法设计了一种新型的搜索方式及自适应度更新的方法。

本项目通过HPO猎人猎物优化算法优化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.构建HPO猎人猎物优化算法优化CATBOOST分类模型

主要使用HPO猎人猎物优化算法优化CATBOOST分类算法,用于目标分类。

6.1 HPO猎人猎物优化算法寻找最优的参数值   

最优参数:

 

6.2 最优参数值构建模型

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

7.2 分类报告

  

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

7.3 混淆矩阵

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

8.结论与展望

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

def __init__(self, m, T, lb, ub, R, C, X_train, y_train, X_test, y_test):
    self.M = m  # 种群个数
    self.T = T  # 迭代次数
    self.lb = lb  # 下限
    self.ub = ub  # 上限
    self.R = R  # 行
    self.C = C  # 列
    self.b = 0.1  # 调节参数
 
    self.X_train = X_train  # 训练集特征
    self.X_test = X_test  # 测试集特征
    self.y_train = y_train  # 训练集标签
    self.y_test = y_test  # 测试集标签
 
 
 
# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接:https://pan.baidu.com/s/1-P7LMzRZysEV1WgmQCpp7A 
 
# 提取码:5fv7
 
# ******************************************************************************
 
 
 # 提取特征变量和标签变量
y = df['y']
X = df.drop('y', axis=1)
 
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

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

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


 

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

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

相关文章

AgentGPT:基于GPT-4的开源AI自动化机器人工具

【产品介绍】 AgentGPT是一个基于GPT-4的开源AI自动化机器人工具,可以让你在浏览器中配置和部署自主的 AI机器人。你可以给机器人设置一个名字和一个目标,然后点击部署按钮,就可以看到机器人进行的行为和输出,完全不需要人为干涉的…

【自动化测试】接口自动化测试工具有哪些?

Jmeter jmeter完成接口脚本,Ant完成脚本执行并收集结果生成报告,最后利用jenkins完成脚本的自动集成运行。 Postman或者newman javahttpclient,通过代码实现 JavaRestassored pythonrullib2 pythonrequests httprunner yapi 轻量 代码实现框架 pythonrequest…

PY32F003F18之PWM互补输出

PY32F003F18中有一个“数字比较器”,这是我的叫法,为了便于和模拟比较器区分。它用作PWM输出功能。 一、比较通道1电路图 二、PWM工作模式 PWM的工作模式: 1、PWM边沿对齐模式 计数器工作在"边沿对齐模式" 设置"TIMx控制寄存…

C语言 -- 零基础入门详解

文章目录 引言1. 第一个C语言程序:HelloWorld1.1 编写C语言代码:hello.c1.2 代码分析 2. 数据类型2.1 常量与变量2.1.1 关键字2.1.2 数据类型2.1.3 常量2.1.4 变量2.1.5 使用示例 2.2 整型:int2.2.1 整型变量的定义和输出2.2.2 整型变量的输入…

How to control the model in the webots usingthe ros controller ?

这里写自定义目录标题 how to use controller in Ros to control the model built in the Webots ?section 1: install ubantu 20.04 and webots 2021b ? how to use controller in Ros to control the model built in the Webots ? section 1: install ubantu 20.04 and w…

Ecrett Music:AI音乐创作软件

【产品介绍】 Ecrett Music是一个由人工智能驱动的AI音乐创作软件,可以帮助内容创作者快速、简单、便宜地制作出适合自己的无版权音乐。无论你是做游戏、视频、播客还是其他类型的内容,都可以在Ecrett Music上选择场景、情绪或风格,然后点击一…

算法--冒泡排序

算法步骤 /*** 冒泡排序** version 1.0* date 2023/09/01 15:23:58*/ public class Bubble {/*** 升序冒泡排序** param a 待排序的数组* date 2023/9/1 15:29:10*/public static void sortAes(int[] a) {for (int i a.length - 1; i > 0; i--) {for (int j 0; j < i;…

redis集群hashTag简述

概述 单体redis一般性能可以满足大部分场景的要求了&#xff0c;但是当业务体量起来的时候&#xff0c;就会要求高可用了。 此时一般会将单机redis扩充至集群,一般3主3从 redis集群中master之间各自存储部分数据&#xff0c;master和slave之间数据则是相同的. Redis会把每一…

Cocos独立游戏开发框架(18):配置管理器

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。 在游戏开发中&#xff0c;配置是一个重要的角色&#xff0c;他常常由策划去驱动&#xff0c;调整和优化&#xff0c;使得游戏的难度和设定更加符合玩家们的体验&#xff0c;…

如果回到5年前,20几岁的时候,想对过去的自己说点什么

今天跟大家聊一聊,如果回到5年前,10年前,怎么看待当年的自己 与此同时,对于未来3到5年,又有一个什么样的期待,自言自语几句的 对于未来,真的没有办法去预测,尽管如雷军鸡汤里的,永远要相信,美好的事情即将发生,但是不可否认的是,你永远也不知道惊喜和意外哪个先到 但是对于已经…

高级IO-epoll

文章目录 1. I/O多路转接之poll1.1 代码样例1.2 poll优缺点 2. I/O多路转接之epoll2.1 epoll的相关系统调用 3. epoll工作原理3.1 epoll的优点 4. 代码样例4.1 初始化服务器4.2 启动服务器 5. epoll工作方式6. epoll的使用场景 1. I/O多路转接之poll poll函数解决了&#xff0…

delphi 自带的dbgrid表格控件增加下选框

在表格里用combobox很正常 自带的dbgrid加也很方便&#xff0c;环境是xe10 procedure TfrmBaseInfo.LoadDesk; varssql: string;i: Integer;column: TColumn; beginssql : select * from desk_info ;qry_desk.Connection : dmMain.FDConnection1;qry_desk.Close;qry_desk.S…

机器视觉之Basler工业相机使用和配置方法(C++)

basler工业相机做双目视觉用&#xff0c;出现很多问题记录一下&#xff1a; 首先是多看手册&#xff1a;https://zh.docs.baslerweb.com/software 手册内有所有的源码和参考示例&#xff0c;实际上在使用过程中&#xff0c;大部分都是这些源码&#xff0c;具体项目选择对应的…

java实现克里金插值导出geojson矢量数据(kriging)

生成效果 在现代科学研究中&#xff0c;数据的处理和分析是至关重要的一环。然而&#xff0c;我们往往会遇到数据缺失的情况&#xff0c;这时就需要使用插值方法来填补这些缺失值。其中&#xff0c;克里金插值法是一种常用的方法&#xff0c;在很多领域都有广泛的应用。 首先&…

RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/132869448 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【剑指Offer】52.两个链表的第一个公共节点

题目 输入两个链表&#xff0c;找出它们的第一个公共节点。 如下面的两个链表&#xff1a; 在节点 c1 开始相交。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 输出&#xff1a;Reference of the n…

【Linux】网络编程套接字(C++)

目录 一、预备知识 【1.1】理解源IP地址和目的IP地址 【1.2】认识端口号 【1.3】理解 "端口号" 和 "进程ID" 【1.4】理解源端口号和目的端口号 【1.5】认识TCP协议 【1.6】认识UDP协议 二、网络字节序 【2.1】socket编程接口 【2.1.1】socket AP…

5款实用的Redis可视化工具

Redis可视化工具是一种用于管理和监视Redis数据库的工具&#xff0c;它提供了一个可视化界面来操作和查看Redis的数据和配置信息&#xff0c; 可以让我们更加直观地管理和操作Redis数据库。下面介绍四款比较不错的Redis可视化工具。 1.Redis可视化工具推荐—RedisInsight Red…

美创科技入选第二届安徽省网络和数据安全应急技术支撑单位

9月11日&#xff0c;2023年安徽省网络安全宣传周活动在阜阳市正式启动。安徽省委常委、宣传部部长陈舜出席并宣布网安周正式启动。阜阳市委书记刘玉杰、省委宣传部副部长、省委网信办主任张杰华出席并致辞。 开幕式上&#xff0c;省委网信办副主任齐海洋发布第二届安徽省网络和…

Template serialization - shared_ptr<class T>

下面包含的所有代码片段都在 boost::serialization 命名空间内定义。 shared_ptr < T > 在 shared_ptr.hpp 中定义。 shared_ptr 的一般类轮廓如下&#xff1a; shared_ptr 包括以下成员&#xff1a; T *px;shared_count pn;&#xff0c;其中包含指向&#xff1a; sp_c…