Python实现GWO智能灰狼优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

news2025/1/20 5:51:25

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



 


1.项目背景

灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。灵感来自于灰狼群体捕食行为。优点:较强的收敛性能,结构简单、需要调节的参数少,容易实现,存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全局搜索之间实现平衡,因此在对问题的求解精度和收敛速度方面都有良好的性能。缺点:存在着易早熟收敛,面对复杂问题时收敛精度不高,收敛速度不够快。

灰狼群体中有严格的等级制度,一小部分拥有绝对话语权的灰狼带领一群灰狼向猎物前进。灰狼群一般分为4个等级:αβδω(权利从大到小)模拟领导阶层。集体狩猎是灰狼的一种社会行为,社会等级在集体狩猎过程中发挥着重要的作用,捕食的过程在α的带领下完成。主要包括三个步骤:

  1. 跟踪和接近猎物
  2. 骚扰、追捕和包围猎物,直到它停止移动
  3. 攻击猎物

本项目通过GWO灰狼优化算法优化XGBoost分类模型。

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2数据缺失查看

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

从上图可以看到,总共有10个变量,数据中无缺失值,共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.构建GWO灰狼优化算法优化XGBoost分类模型

主要使用GWO灰狼优化算法优化XGBClassifier算法,用于目标分类。

6.1 GWO灰狼优化算法寻找的最优参数

关键代码:

每次迭代的过程数据:

 

最优参数:

----------------4. 最优结果展示-----------------

The best n_estimators is 100

The best learning_rate is 0.05

 6.2 最优参数值构建模型

7.模型评估

7.1评估指标及结果

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

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

关键代码如下:

 

7.2 查看是否过拟合

 

从上图可以看出,训练集和测试集分值相当,无过拟合现象。

7.3 分类报告

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

7.4 混淆矩阵

 

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

8.结论与展望

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

本次机器学习项目实战所需的资料,项目资源如下:
 
项目说明:
 
链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ
 
提取码:thgk

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

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


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

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

相关文章

天猫数据分析软件(天猫销售数据如何查询)

俗话说得好:“知己知彼,百战不殆”。当前,在天猫店铺运营中,大家也非常注重数据分析,由此能够了解到竞争对手及整个行业的销售数据及销售趋势。 一、具体来讲,做好天猫数据分析有哪些益处呢? 1、…

pytorch 数据类型

文章目录一、tensor如何表示字符串数据类型类型判断Dimension 0Dimension 1Dimension 2Dimension 3Dimension 4mixed二、创建Tensorimport from numpyimport from listuninitialized 未初始化set default typerand/rand_like, randintfulllinspaceindex切片三、维度变换总结一、…

假期怕剧荒?五一假期追剧人正确打开方式

马上就是五一假期了 趁着假期必须狠狠刷剧才是我们追剧人正确的打开方式! 追剧人,追剧魂 追剧人就是快乐多! 俗话说,吃饭不能没有饭碗,那咱们追剧也不能没有好用的追剧平台啊! 之前因为要一次性追好几部…

React styled-components (一) —— 基本使用

https://github.com/styled-components/styled-components styled-components 基本使用介绍优点缺点安装引入使用基本用法样式嵌套介绍 styled-components 是一个针对 React 的 css in js 类库。 和所有同类型的类库一样,styled-components 通过 js 赋能解决了原生…

教你如何搭建物业-办公管理系统,demo可分享

1、简介 1.1、案例简介 本文将介绍,如何搭建物业-办公管理。 1.2、应用场景 该应用包含停车、收费、投诉、通知、访客等管理功能。 2、设置方法 2.1、表单搭建 1)新建表单【业主信息】,字段设置如下: 名称类型名称类型类型…

30天学会《Streamlit》(3)

30学会《Streamlit》是一项编码挑战,旨在帮助您开始构建Streamlit应用程序。特别是,您将能够: 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第3天 - st.…

京东技术专家首推:微服务架构深度解析,GitHub星标120K

前言 微服务经过了长足的发展,在每个阶段所产生的信息都很多。在信息爆炸的当今,找到一本将信息梳理得井井有条的好书,是提升学习效率的最佳途径。 本书层次分明,分为原理篇、实践篇和进阶篇,适用于广泛的人群。理论…

电子商务客户保留策略:如何让买家回头

潜在客户转换是电子商务企业主的一大胜利。然而,在您成功将潜在客户转化为客户之后,可以而且应该采取无数步骤。购买后的有效营销应该是您的首要任务。 您可能知道,获取新客户的成本高于留住现有客户的成本。因此,制定客户保留策略…

毅硕科技携手Sentieon独家赞助第21届亚太生物信息学大会(APBC 2023)

APBC介绍 亚太生物信息学大会(Asia Pacific Bioinformatics Conference, APBC)是一年一度的行业国际盛会,汇聚区域间生物信息学领域的学者、研究人员和产业领导者,共同探讨生物信息学领域的研究进展、技术发展和应用创新。自2003…

分布式计算技术(下):Impala、Apache Flink、星环Slipstream

实时计算的发展历史只有十几年,它与基于数据库的计算模型有本质区别,实时计算是固定的计算任务加上流动的数据,而数据库大多是固定的数据和流动的计算任务,因此实时计算平台对数据抽象、延时性、容错性、数据语义等的要求与数据库…

银河麒麟V10操作系统之root密码重置

一、需求说明 从kingbase工程师那拷贝了一个已经安装了kingbase数据库环境的虚拟机,只有一个kingbase普通账户,root密码位置,且该账户未加入到sudo组中,无法执行新软件等的安装和部署。为了满足需要,我们需要重置root密…

测试5年,从纯手工测试到测试开发,我是怎么拿到腾讯25koffer的?

什么都做了,和什么都没做其实是一样的,走出“瞎忙活”的安乐窝,才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了,以前经常听到开发对我说,天天的点点点有意思没&#xff1f…

4.11---Mybatis之#{}和${}的区别(复习版本)

1、在MyBatis 的映射配置文件中,动态传递参数有两种方式: 1.#{} 占位符 2.${} 拼接符 2、#{} 和 ${} 的区别 #{} 为参数占位符 ?,即sql 预编译 ${} 为字符串替换,即 sql 拼接 #{}:动态解析 -> 预编译 -> 执行 $…

[STM32F103C8T6] 重做51 基于iic的oled显示实验

51单片机没有硬件iic,我们是通过io口软件模拟iic时序 https://blog.csdn.net/weixin_63303786/article/details/128705478?spm1001.2014.3001.5501https://blog.csdn.net/weixin_63303786/article/details/128705478?spm1001.2014.3001.5501 而stm32有iic硬件&am…

Mysql(函数) 字符串截取、拆分, 逗号分割字符串当做 in 的条件

目录 引言: 数据库函数的总结(一) 1. mysql截取拆分 2. 逗号分割的字符串 作为in条件 -> 2.1 正常的效果应该是 ---> 2.1.1 错误: 3. 字符串合并(多条数据合并 用、分割) 引言: 数据库函数的总结(一) 1. 字符串截取、拆分 2. 逗号分割字符串当做 in 的条件 …

Mysql 学习(三)InnDB 存储引擎-页结构

数据页结构的大概 首先我们先来了解一下,InnoDB的存储单元是数据页的概念,页的大小一般是16KB,而InnoDB里面存放了很多不同目的 的数据页,比如存放Insert Buffer的信息页,Undo的日志页等等。但是这里我们主要讲解的是…

从C语言到C++(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)

目录 前言 1.认识C 2.C的重要性 3.如何学习C 4.编写hello world! 5.关键字 6.命名空间(namespace) 6.1命名空间的定义 6.2命名空间里的内容 6.3命名空间重名问题 6.4命名空间展开问题 6.5匿名命名空间 7.C的输入与输出 7.1 输入和…

生产模块-报工自动产生返工订单(触发点-Trigger Point)

目录 应用场景 配置点-完整模式(通过自定义状态触发) 其他说明 应用场景 一般来说适合自动化程度高,生产集成了MES和质检的功能,工序报工时发生返工业务时,根据返工的指令,系统直接下达返工订单。例如&…

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思。

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…

【CSS】定位 ③ ( 绝对定位 | 父容器有定位相对于父容器定位 | 父容器没有定位相对于浏览器进行定位 )

文章目录一、绝对定位二、标准流下的父容器与子元素关系1、标准流下父容器与子容器代码2、移动父容器后的效果三、子元素设置绝对定位与父容器是否有定位的效果对比1、父容器没有定位的情况下为子容器添加定位2、父容器有定位的情况下为子容器添加定位3、父容器没有定位爷爷容器…