Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战

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

1.项目背景

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

本项目通过HPO猎人猎物优化算法寻找最优的参数值来优化XGBoost回归模型。

2.数据获取

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

|--------|----------|--------|
| 编号 | 变量名称 | 描述 |
| 1 | x1 | |
| 2 | x2 | |
| 3 | x3 | |
| 4 | x4 | |
| 5 | x5 | |
| 6 | x6 | |
| 7 | x7 | |
| 8 | x8 | |
| 9 | x9 | |
| 10 | x10 | |
| 11 | y | 因变量 |

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

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.构建HPO猎人猎物优化算法优化XGBoost回归模型

主要使用HPO猎人猎物优化算法优化XGBoost回归算法,用于目标回归。

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

最优参数:

6.2 最优参数值构建模型

|--------|-------------|----------------------------------|
| 编号 | 模型名称 | 参数 |
| 1 | XGBoost回归模型 | n_estimators=best_n_estimators |
| 2 | XGBoost回归模型 | learning_rate=best_learning_rate |

7.模型评估

7.1 评估指标及结果

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

|-------------|----------|-----------|
| 模型名称 | 指标名称 | 指标值 |
| 测试集 |||
| XGBoost回归模型 | R方 | 0.8543 |
| XGBoost回归模型 | 均方误差 | 3110.5038 |
| XGBoost回归模型 | 可解释方差值 | 0.8561 |
| XGBoost回归模型 | 平均绝对误差 | 43.5969 |

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

关键代码如下:

7.2 真实值与预测值对比图

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

8.结论与展望

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

python 复制代码
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:

# 链接:https://pan.baidu.com/s/1LuNsZzY4Mpf1Is7r35FrBg 
# 提取码:h1oi

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

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


相关推荐
weixin_4296302615 分钟前
实验二-决策树-葡萄酒
算法·决策树·机器学习
MediaTea24 分钟前
Python 第三方库:matplotlib(科学绘图与数据可视化)
开发语言·python·信息可视化·matplotlib
草莓熊Lotso33 分钟前
C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战
前端·c++·python·selenium
我是李武涯1 小时前
PyTorch Dataloader工作原理 之 default collate_fn操作
pytorch·python·深度学习
Kratzdisteln2 小时前
【Python】绘制椭圆眼睛跟随鼠标交互算法配图详解
python·数学·numpy·pillow·matplotlib·仿射变换
maxruan2 小时前
PyTorch学习
人工智能·pytorch·python·学习
吃饭睡觉发paper2 小时前
Learning Depth Estimation for Transparent and Mirror Surfaces
人工智能·机器学习·计算机视觉
唐古乌梁海2 小时前
【python】在Django中,执行原生SQL查询
python·sql·django
程序员大雄学编程3 小时前
「用Python来学微积分」5. 曲线的极坐标方程
开发语言·python·微积分
一位代码4 小时前
python | requests爬虫如何正确获取网页编码?
开发语言·爬虫·python