Python实现贝叶斯优化器(Bayes_opt)优化深度森林(Deep Forest)分类模型(deepforest分类算法)项目实战

news2024/11/25 2:28:03

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

1.项目背景

深度森林是一种基于集成学习的机器学习方法,其设计灵感来源于深度学习的成功。它通过堆叠多个决策树模型(通常是随机森林)并结合层级结构的方式构建模型,能够在不需要复杂的反向传播机制的情况下达到与深度神经网络相当的性能。与深度学习相比,深度森林通常具有更快的训练速度和更少的计算资源需求。

贝叶斯优化是一种全局优化技术,特别适用于黑盒函数的优化问题,这些函数往往代价昂贵且没有解析形式。贝叶斯优化的核心思想是利用代理模型(如高斯过程)来近似目标函数,并通过获取该代理模型的信息来指导下一步搜索的位置。贝叶斯优化广泛应用于超参数调优、实验设计等领域。

本项目使用Python实现贝叶斯优化器(Bayes_opt)优化深度森林(Deep Forest)分类模型(deepforest分类算法)项目实战。  

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()方法查看前五行数据:

从上图可以看到,总共有11个字段。

关键代码:

3.2 缺失值统计

使用Pandas工具的info()方法统计每个特征缺失情况:

从上图可以看到,数据不存在缺失值,总数据量为2000条。

关键代码:  

3.3 变量描述性统计分析

通过Pandas工具的describe()方法来来统计变量的平均值、标准差、最大值、最小值、分位数等信息:

关键代码如下:

4.探索性数据分析

4.1 y变量分类柱状图

用Pandas工具的value_counts().plot()方法进行统计绘图,图形化展示如下:

从上面图中可以看到,分类为0和1的样本,数量基本一致。

4.2 y变量类型为1 x1变量分布直方图

通过Matpltlib工具的hist()方法绘制直方图:

从上图可以看出,y=1的数据主要集中在-2到2之间。

4.3 相关性分析

通过Pandas工具的corr()方法和seaborn工具的heatmap()方法绘制相关性热力图:

从图中可以看到,正数为正相关,负数为负相关,绝对值越大相关性越强。

5.特征工程

5.1 建立特征数据和标签数据

y为标签数据,除 y之外的为特征数据。关键代码如下:

5.2 数据集拆分

数据集集拆分,分为训练集和测试集,80%训练集和20%测试集。关键代码如下:

6.构建贝叶斯优化器优化深度森林分类模型

主要使用基于贝叶斯优化器优化deepforest分类算法,用于目标分类。 

6.1 构建调优模型

编号

模型名称

调优参数

1

深度森林分类模型

n_estimators

2

n_trees

3

max_layers

6.2 最优参数展示

最优参数结果展示:

6.3 最优参数构建模型 

编号

模型名称

调优参数

1

深度森林分类模型

n_estimators=int(params_best['n_estimators'])

2

n_trees=int(params_best['n_trees'])

3

max_layers=int(params_best['max_layers']

7.模型评估

7.1 评估指标及结果 

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

模型名称

指标名称

指标值

测试集

深度森林分类模型

准确率

0.9600

查准率

0.9352

召回率

0.9902

F1分值

0.9619

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

关键代码如下:

7.2 分类报告

模型的分类报告:

从上图可以看到,分类类型为0的F1分值为0.96;分类类型为1的F1分值为0.96;整个模型的准确率为0.96。

7.3 混淆矩阵

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

8.结论与展望

综上所述,本项目采用了基于贝叶斯优化器优化深度森林分类模型,最终证明了我们提出的模型效果良好。

df['y'].value_counts().plot(kind='bar')  # 绘图
plt.xlabel("y变量")  # 设置x轴名称
plt.ylabel("数量")  # 设置y轴名称
plt.title('y变量柱状图')  # 设置标题名称
plt.show()  # 展示图片

# 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轴名称
plt.title('y=1样本x1变量分布直方图')  # 设置标题名称
plt.show()  # 展示图片
 
# 获取方式:
 
# 项目实战合集导航:
 
# https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2

# https://item.taobao.com/item.htm?ft=t&id=830675191389

params_best, score_best = param_bayes_opt_DeepForest(5, 3)  # 调用贝叶斯优化器

print('最优参数组合:  ',
      'n_estimators的参数值为:', int(params_best['n_estimators']),
      'n_trees的参数值为:', int(params_best['n_trees']),
      'max_layers的参数值为:', int(params_best['max_layers'])
      )  # 打印最优参数组合

'欢迎关注下方公众号,谢谢。'

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

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

相关文章

2024年四款必备的Windows录屏工具推荐!

无论你是教育工作者、游戏主播、还是企业培训师,一款好的录屏工具都能让你的工作事半功倍。今天,我们就来探讨录屏工具几种不同的使用情境,并推荐几款适合相应情境的Windows录屏工具! 福昕录屏大师 直达链接:www.fox…

云联惠涉传!商家联盟再起新秀!某店模式 三年百亿销售额!

大家好,我是吴军,任职于一家致力于软件开发领域的公司,担任产品经理的职位。 今天,我想和大家探讨一下曾经风靡一时的云联惠平台。在其全盛时期,该平台吸引了超过一千万的用户,并且资金规模达到了6000亿的…

食品种类检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

食品种类检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

100%结构化输出——OpenAI新功能大幅增强工具调用

告别杂乱输出,OpenAI引领大模型的精准时代 ©作者|Steven 来源|神州问学 作为一名大模型的使用者,你是否曾通过编写极其复杂的提示词,以规范化模型输出的内容,然而结果普遍是模型输出格式与要求的格式相差甚远,导…

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-27浅谈XILINX BRAM的基本使用

软件版本:VIVADO2021.1 操作系统:WIN10 64bit 硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台:米联客-MLK-H3-CZ08-7100开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 http…

0826-0901 各种面试笔试题算法题整理

目录 1. 最长回文子串 2. 设计模式里和单一职责原则冲突的是&#xff1f; 3. int array[] {10,20,30} cout<<-2[array-1] 是多少 4. python 定义 class method 直接对类修改变量值和建立对象后通过对象修改变量值&#xff0c;最后的结果是多少 5. LRU缓存 6. 二叉…

Kafka【六】Linux下安装Kafka集群

Kafka从早期的消息传输系统转型为开源分布式事件流处理平台系统&#xff0c;所以很多核心组件&#xff0c;核心操作都是基于分布式多节点的。本文这里采用三台虚拟机模拟真实物理主机搭建Zookeeper集群和kafka集群。 VMware可以使用户在一台计算机上同时运行多个操作系统&…

继承(CPP)

引言 继承是CPP的一个重要语法。在现实生活中存在“子承父业”的说法&#xff0c;在CPP中同样存在这样的语法&#xff0c;而继承就是这种语法。 面向对象的三大特征&#xff1a;封装、继承、多态 本文将通过以下要素&#xff0c;进行继承的深入讲解 1.继承的概念及定义 2.基…

什么是网络准入控制系统?四款网络准入控制系统推荐 干货满满!

在当今的企业网络环境中&#xff0c;随着设备类型的多样化和远程办公的普及&#xff0c;网络安全面临的挑战愈加复杂。网络准入控制系统&#xff08;Network Access Control, NAC&#xff09;应运而生&#xff0c;成为企业保障网络安全的重要工具。本文就带你详细了解这一系统&…

4 款基于Python的鼠标键盘自动化工具,可解决Windows、macOS和Linux下的桌面自动化问题

在日常工作中&#xff0c;自动化工具可以极大地提升我们的工作效率&#xff0c;尤其是当面对重复性任务时。今天&#xff0c;我们将详细介绍四款基于Python的鼠标键盘自动化工具&#xff0c;帮助你在各种平台上轻松实现自动化操作。这些工具分别是 PyAutoGUI、KeymouseGo、Keyl…

《Nature》重磅发布:ChatGPT在学术研究和写作中的最佳应用指南

在论文写作过程中&#xff0c;ChatGPT 已成为许多研究人员的得力助手。知名生物医学教授 Milton Pividori 博士在《Nature》杂志上发表的文章《Chatbots in Science: What Can ChatGPT Do for You?》详细探讨了如何通过精心设计的提示词来有效利用 ChatGPT 提高学术写作的效率…

支付宝线上小程序打开异常

1. 其他手机都可以正常访问线上版本&#xff0c;只有一个安卓手机不行&#xff08;排除支付宝低版本以及手机系统问题&#xff09; 2. 出现访问异常的手机都可以正常访问体验版以及开发版本 3. 尝试去关闭该手机的联调设置以及清除开发版缓存&#xff0c;成功访问线上版本 需要…

如何彻底关闭Chrome浏览器自动更新

1.首先找到桌面 中Google Chrome浏览器的图片,鼠标右键打开文件所在的位置 2.选择Google 目录 选择 Update 目录 右键 选择属性 右键 选择属性 点击确定 修改成功 3.继续 第(2)步 选择 高级 4.点击禁用继承 !!!!!!! 测试 再次点击 Update 文件夹 弹出 你当前无权访问该文件夹…

一文1400字Jmeter实现mqtt协议压力测试

1. 下载jmeter&#xff0c;解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例&#xff0c;下载地址&#xff1a; https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压&#xff1a; unzip apache-jmeter-5.4.3.zip 2. 下载m…

如何在 Github 上找到心仪的开源项目?

Github&#xff0c;全球最大的开源社区&#xff0c;集中了目前最多、最优质的各种开源代码。 我们经常说不要重复造轮子&#xff0c;但如果不知道怎么找到已有的轮子&#xff0c;那就没有前提&#xff0c;对自己来说什么轮子都是新的。所以&#xff0c;搞开发&#xff0c;首先要…

Opencv中的直方图(5)计算EMD距离的函数EMD()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个加权点配置之间的“最小工作量”距离。 该函数计算地球搬运工距离&#xff08;Earth Mover’s Distance&#xff09;和/或两个加权点配…

微电网管理系统

微电网管理系统 1. 相关概念简介 基本概念及分析意义&#xff1a; 微电网基本概念&#xff1a;微电网&#xff08;MG&#xff09;由分布式电源、用电负荷、能量管理系统等组成&#xff0c;是一个能够基本实现内部电力电量平衡的供用电系统。 通过整合分布式电源、储能、负荷…

libusb在window下,使用vsstudio的初步安装与使用

下载&#xff1a; 首先&#xff0c;访问github官网 https://github.com/libusb/libusb/tree/master 然后&#xff0c;在版本选择里面&#xff0c;选择标签&#xff0c;点击最新的标签&#xff0c;&#xff08;这种一般稳定性最高&#xff09; 选择完后使用自己的方式下载下来…

双轨直销模式:团队互助与业绩倍增的商业策略

双轨直销模式因其操作简单、业绩压力较小、管理方便以及初期爆发力强等特点&#xff0c;受到许多直销公司的喜爱&#xff0c;并促进了多家大型企业的成长。 一、双轨直销模式简介 双轨直销是一种独特的组织架构&#xff0c;其核心在于每个销售代表仅需构建两个独立的销售线&a…

MiniMax 首个文生视频模型发布,可生成 6s,限时免费;阿里 Qwen2-VL 第二代视觉语言模型开源丨RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…