Python实现PSO粒子群优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

news2024/9/27 23:27:31

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




1.项目背景

PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式。

本项目通过PSO粒子群优化LightGBM分类算法来构建分类模型。

2.数据获取

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

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

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

3.2数据缺失查看

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

从上图可以看到,总共有9个变量,数据中无缺失值,共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.构建PSO粒子群优化LightGBM分类模型

主要使用PSO粒子群算法优化LightGBM分类算法,用于目标分类。

6.1 PSO粒子群算法寻找最优参数值

最优参数:

6.2 最优参数值构建模型

7.模型评估

7.1评估指标及结果

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

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

关键代码如下:

7.2 分类报告

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

7.3 混淆矩阵

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

8.结论与展望

综上所述,本项目采用了PSO粒子群算法寻找LightGBM分类算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

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



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



if abs(params[0]) > 0:  # 判断取值
        n_estimators = int(abs(params[0])) + 100  # 赋值
else:
        n_estimators = int(abs(params[0])) + 100  # 赋值

if abs(params[1]) > 0:  # 判断取值
        learning_rate = (int(abs(params[1])) + 1) / 10  # 赋值
else:
        learning_rate = (int(abs(params[1])) + 1) / 10  # 赋值

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

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


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

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

相关文章

浅谈应急照明设计与应用

安科瑞 华楠 【摘要】应急照明是因正常照明的电源失效而启用的照明。应急照明作为工业及民用建筑照明设施的一个部分,同人身安全和建筑物、设备安全息息相关。本文对应急照明设计的主要内容进行了介绍,主要内容包括:应急照明的分类及含义,应…

如何有效地提取背景音乐并消除人声?分享这几个方法给大家!

如何有效地提取背景音乐并消除人声?在制作视频或音频项目时,我们经常需要从原始音频中提取背景音乐并消除人声。这个过程可能对初学者来说并不简单,因为它需要一些专门的技术和工具。为了帮助你解决这个问题,我们将分享三种常用的…

前端Vue入门-day02

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强 操作class 案例:京东秒杀 tab 导航高亮 …

如何将PDF转换为Excel?分享这两个实用的方法!

如何将PDF转换为Excel?在我们的日常工作中,我们可能会遇到一些别人发送的PDF文件。这些PDF文件可能包含一些需要我们提取出来做报告的表格或数据信息。如果一个个数据敲入实在是太麻烦了,也很耽误时间,毕竟工作的效率是最重要的。…

云计算的学习(一)

一、云计算的介绍 1.初识云计算及云计算的优势 1.1常见的云计算服务 云文件存储、云音乐、云备份等。 1.2云计算的优势 ①按需自助服务 IT行业需求与客服咨询,了解与自己相适应的云计算服务。 ②广泛的网络接入 只要连接互联网即可使用云计算服务。 ③资源…

一个知识点:delete QProcess的parent时, 启动的子进程会不会销毁?

如题: 好久没有用QProcess了, 一直在搞 wasm 原生c 突然被问到这个 我一想 应该会被销毁 因为下面代码执行的时候 执行delete p 就好杀死进程 QProcess *p new QProcess();p->start("D://FreeClipViewer//FreeClipViewer.exe");delete p;那delete…

总结TLS指纹反爬

前言 在我们参数算法完全还原的情况,请求网站却提示身份认证失败,我们推测可能存在的情况如下: cookieshttp2.0tls指纹 其中什么是tls指纹? TLS指纹,也有人叫JA3指纹。在创建TLS连接时,根据TLS协议在Cl…

Python-opcu啊编程(5)-数据变化通知(datachange_notification)

在OPCUA服务器端,当数据或者变化时,要做一些处理。例如:在聚合服务器或者网关程序中,当客户端修改某一个变量时,需要将修改值传递给底层服务器或者现场总线设备(比如modbus设备。 这是一种中继方式。SubHan…

CEC2015动态多目标优化算法:基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2015(提供MATLAB代码)

一、动态多目标优化问题 1.1问题定义 1.2 动态支配关系定义 二、 基于自适应启动策略的混合交叉动态多目标优化算法 基于自适应启动策略的混合交叉动态多目标优化算法(Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on S…

TCP 协议(一)报文

TCP 提供面向连接的通信传输,面向连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接…

如果你也好奇免费音频转换器哪个好用,就看看这篇吧

在繁忙的都市中,我有幸结识了一个名叫杰克的年轻音乐制作人。杰克是一位对音乐充满热情的创作者,他在这个喧嚣的城市里不断探索着音乐的可能性。然而,他面临着一个令人困扰的问题——他需要将一段重要的音频转换成不同的格式,以便…

有趣的命令——————用shell脚本实现乘法口诀表

vim test.sh 输入以下内容#!/bin/bashfor i in {1..9} dofor ((j1;j<$i;j))doecho -n "${j}x${i}$(($i*$j)) "doneecho done 以下是测试图&#xff1a;有需要的可以过来看看哟&#xff01;&#xff01;&#xff01;

Android Camera2-预览、拍照、录像流程

一、Camera2实现预览、拍照、录像三大基础功能的流程框架图 Camera2关键几个类&#xff1a; CameraManager 管理手机上的所有摄像头设备。管理手机上的所有摄像头设备&#xff0c;它的作用主要是获取摄像头列表和打开&#xff08;openCamera&#xff09;指定的摄像头。 它其…

3.3::ASP.NET Zero Power Tools VS扩展--Crack

ASP.NET Zero Power Tools是一个 Visual Studio 扩展&#xff0c;可以自动创建从数据库到用户界面的实体及其层。因此&#xff0c;您可以在几秒钟内创建一个完全工作、生产就绪的 CRUD 页面。 请注意&#xff0c;Power Tools 仅适用于ASP.NET Core模板&#xff0c;不适用于 AS…

托福口语考试的难度与要求分别是什么?

托福口语很多学生都觉得难度高&#xff0c;那么它的难度到底有哪些&#xff1f;会有哪些要求呢&#xff1f;就随来看看托福口语考试的难点&#xff0c;以及备考的事项。 一、托福口语难点 1、思考时间短&#xff0c;答题时间长 托福独立口语的思考时间仅有15秒&#xff0c;综…

PyAutoGUI实现对LoadRunner报告自动化截图

一、前言 对系统压测后&#xff0c;需要编写汇总报告。LoadRunner场景生成的Analysis报告&#xff0c;要截图保存部分图片。 每次几个功能&#xff0c;每个功能几个并发场景&#xff0c;每个场景有4张左右图片。太多重复性工作了&#xff0c;费时费力。 思考&#xff1a;怎么…

神码融信金融SBG交付二部VP李先林受邀为第十二届中国PMO大会演讲嘉宾

神码融信金融SBG交付二部VP李先林先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;多项目管理的心得体会。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 在后疫情时代&#xff0c;金融科技…

pytorch里torch.gather()和torch.Tensor.scatter()解析

torch.Tensor.scatter() 类似 gather 的反向操作&#xff08;gather是读出数据&#xff0c;scatter是写入数据&#xff09;&#xff0c;所以这里只解析torch.gather()。 gather()这个操作在功能上较为反人类&#xff0c;即使某段时间理解透彻了&#xff0c;过了几个月不碰可能又…

【java】LocalDate获取前一天日期

//获取前一天日期//写法一LocalDate yesterday2 LocalDate.now().minusDays(1);System.out.println(yesterday2);//写法二LocalDate yes1 LocalDate.now().plusDays(-1);System.out.println(yes1);//输入当前日期的年 月 日System.out.println(LocalDate.now().getYear());…

基于AidLux的自动驾驶智能预警应用方案

1. 自动驾驶感知算法及AidLux相关方案介绍 1.1自动驾驶 自动驾驶汽车&#xff0c;又称无人驾驶车、电脑驾驶车、无人车、自驾车&#xff0c;是一种需要驾驶员辅助驾驶或者完全不需要操控的车辆。作为自动化载具&#xff0c;自动驾驶汽车可以不需要人类操作即能感知环境及导航…