Python实现HBA混合蝙蝠智能算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

news2024/11/16 15:28:57

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



 


1.项目背景

蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度。该算法具有实现简单、参数少等特点。

混合蝙蝠算法针对基本蝙蝠算法存在收敛速度慢,易陷入局部最优,求解精度低等缺陷,提出一种融合局部搜索的混合蝙蝠算法用于求解无约束优化问题。该算法利用混沌序列对蝙蝠的位置和速度进行初始化,为全局搜索的多样性奠定基础;融合Powell搜索以增强算法的局部搜索能力,加快收敛速度;使用变异策略在一定程度上避免算法陷入局部最优。

本项目通过HBA混合蝙蝠智能算法优化LightGBM回归模型。

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

 

关键代码:

 

3.2 数据缺失查看

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

 

从上图可以看到,总共有9个变量,数据中无缺失值,共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.构建HBA混合蝙蝠优化算法优化LightGBM回归模型

主要使用HBA混合蝙蝠优化算法优化LightGBM回归算法,用于目标回归。

6.1 HBA混合蝙蝠优化算法寻找最优的参数值   

最优参数:

 

6.2 最优参数值构建模型 

 

7.模型评估

7.1 评估指标及结果

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

 

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

关键代码如下:

 

7.2 真实值与预测值对比图 

 

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

8.结论与展望

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

# 初始化种群、初始解
Sol = np.zeros((N_pop, d))  # 初始化位置
Fitness = np.zeros((N_pop, 1))  # 初始化适用度
for i in range(N_pop):  # 迭代种群
    Sol[i] = np.random.uniform(Lower_bound, Upper_bound, (1, d))  # 生成随机数
    Fitness[i] = objfun(Sol[i])  # 适用度




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



# y变量分布直方图
fig = plt.figure(figsize=(8, 5))  # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df['y']  # 过滤出y变量的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')

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

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


 

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

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

相关文章

「前缀和以及差分数组」

文章目录 1 前缀和数组1.1 题解1.2 Code1.3 结果 2 二维矩阵的前缀和数组2.1 题解2.2 Code2.3 结果 3 差分数组 1 前缀和数组 适用于快速频繁的计算一个索引区间内的元素之和,核心思想就是使用一个前缀和数组,然后使用前缀和数组的两个元素之差&#xf…

Postman(一)--接口测试知识准备

1.0 前言 ​ 应用程序编程接口(Application Programming Interface, API)是这些年来最流行的技术之一,强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利,但也对测试人员提出了更…

【AGI】Copilot AI编程辅助工具安装教程

GitHub和OpenAI联合为程序员们送上了编程神器——GitHub Copilot。 但是,Copilot目前不提供公开使用,需要注册账号通过审核,我也提交了申请:这里第一期记录下,开启教程,欢迎大佬们来讨论交流。

Jmeter性能测试:高并发分布式性能测试

一、为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求。 基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的性能测试要求。 二、分布式性能测…

微信云开发管理工具入门教程

前言 微信云开发管理工具是是什么? 提供了一套云开发的后台管理工具,并且提供低代码开发工具,开发者可基于低代码工具,连接到业务数据库,拖拽组件生成前端UI,从而定制各类管理端应用。 在这里肯定有同学会…

python 自动化数据提取之正则表达式

>>>> 前 言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式,又称正规表示式、正规表示法、正规…

华为数通HCIP-BGP EVPN基础

MP-BGP MP-BGP(Multiprotocol Extensions for BGP-4)在RFC4760中被定义,用于实现BGP-4的扩展以允许BGP携带多种网络层协议(例如IPv6、L3VPN、EVPN等)。这种扩展有很好的后向兼容性,即一个支持MP-BGP的路由…

企业数据,大语言模型和矢量数据库

随着ChatGPT的推出,通用人工智能的时代缓缓拉开序幕。我们第一次看到市场在追求人工智能开发者,而不是以往的开发者寻找市场。每一个企业都有大量的数据,私有的用户数据,自己积累的行业数据,产品数据,生产线…

MySQL数据库分库分表备份(shell脚本)

创建目录 mkdir /server/scripts 一、使用脚本实现分库备份 1、创建脚本并编写 [rootlocalhost scripts]# vim bak_db_v1.sh #!/bin/bash ######################################### # File Name:bak_db_v1.sh # Version: V1.0 # Author:Shen QL # Email:17702390000163.co…

Vue2基础十、Vuex

零、文章目录 Vue2基础十、Vuex 1、vuex概述 (1)vuex是什么 vuex 是一个 vue 的 状态管理工具,状态就是数据。大白话:vuex 是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据) 例如:购物车数…

驱动_阻塞io内核实现

相关API 1.定义等待队列头 wait_queue_head_t wq_head; 2.void init_waitqueue_head(struct wait_queue_head *wq_head) 功能:用于初始化一个等待队列 参数: wq_head:等待队列头节点指针 返回值:无3.wait_event(wq_head, condition) 功能&am…

Antd DatePicker 日期选择框设置中文不生效

Antd 版本:4.21.6 moment 版本: 2.29.4 这里是 Antd 官网对于日期选择框国际化配置的说明 我是对 DatePicker 单独进行配置,而没有使用全局配置,但是发现代码未生效。 后来发现问题在于引入的路径有误,如下&#xf…

Python中字符串拼接有哪些方法

目录 什么是字符串拼接 为什么要进行字符串拼接 Python中字符串拼接有哪些方法? 什么是字符串拼接 字符串拼接是将多个字符串连接在一起形成一个新的字符串的操作。在编程中,字符串拼接经常用于将不同的字符串组合在一起,以创建更长或更有…

GO语言日志切割 + 记录调用源

准备工作 日志记录对程序排查问题比较关键,记录下GO中日志选择,从以下出发点考虑: 日志文件能自动切割,以免过大能记录从哪个文件哪行代码调用的,方便排查问题配置简单明了库文件使用人数较多,稳定 经过一段…

一大波涨姿势的小众网站,带你解锁新大陆!

夏日炎炎,给大家分享20个涨姿势的小众网站,打开你的新世界大门! 1、电台公园 http://radio.garden/ 可以收听到世界各地的电台,在世界地图上选一个绿点,就可以收听当地的电台了。 2、下载 4K 画质 Bing 壁纸 https…

[OnWork.Tools]系列 03-软件设置

主题设置 点击右上角的设置按钮 可以切换为深色模式 系统设置 点击设置 开机自动运行: 开机自动启动 关闭最小化: 点击右上角关闭按钮时最小化到托盘 快捷键设置: 快速唤醒/隐藏界面 默认为AltO 关于 可以快速打开文件夹,方便调试使用

0-超级计算机

超级计算机 概述主要特点处理能力并行处理大规模存储应用领域能耗云超算 中国超算流行体系结构片内异构节点内异构 概述 当谈到超级计算机时,我们指的是性能超高、处理能力强大的计算机系统。 它们通常由数以千计的处理器核心组成,并具备大规模的内存和…

初识mysql数据库之事务的概念及操作

目录 一、数据库多客户端访问问题 1. 数据库的CURD无限制带来的问题 2. 如何解决CURD导致的问题 二、事务的概念 1. 什么是事务 2. 事务的四个属性 3. mysql对事务的管理 4. 为什么会有事务 5. 事务的版本支持 三、事务的操作 1. 事务提交方式 2. 事务操作的准备工…

力扣简单1道_两数之和

两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序…

【面试题】芯片中的IR drop现象是什么?

这里是尼德兰的喵芯片面试相关文章,欢迎您的访问! 如果文章对您有所帮助,期待您的点赞收藏,也欢迎您对文中存在的问题和疑惑进行评论 此外,gitee仓库尼德兰的喵 (gjm9999) - Gitee.com与微信公众平台也期待您的访问 让我们一起为芯片前端全栈工程师而努力!!!! 今天突然…