XGBoost学习-应用案例

news2024/11/16 13:30:19

文章目录

  • 一、过拟合:剪枝参数与回归模型调参
  • 二、XGBoost模型的保存和调用
    • 使用Joblib保存和调用模型
  • 三、分类案例:XGB中的样本不均衡问题
  • 四、 XGBoost类中的其他参数和功能
  • 总结

一、过拟合:剪枝参数与回归模型调参

class xgboost.XGBRegressor (max_depth=3, learning_rate=0.1, n_estimators=100, silent=True,
objective=‘reg:linear’, booster=‘gbtree’, n_jobs=1, nthread=None, gamma=0, min_child_weight=1,
max_delta_step=0, subsample=1, colsample_bytree=1, colsample_bylevel=1, reg_alpha=0, reg_lambda=1,
scale_pos_weight=1, base_score=0.5, random_state=0, seed=None, missing=None, importance_type=‘gain’, kwargs)
在这里插入图片描述
从曲线上可以看出,模型现在处于过拟合的状态。我们决定要进行剪枝。我们的目标是:训练集和测试集的结果尽量
接近,如果测试集上的结果不能上升,那训练集上的结果降下来也是不错的选择(让模型不那么具体到训练数据,增
加泛化能力)。在这里,我们要使用三组曲线。一组用于展示原始数据上的结果,一组用于展示上一个参数调节完毕
后的结果,最后一组用于展示现在我们在调节的参数的结果。具体怎样使用,我们来看:

在这里插入图片描述
在这里插入图片描述

二、XGBoost模型的保存和调用

pickle是python编程中比较标准的一个保存和调用模型的库,我们可以使用pickle和open函数的连用,来将我们的模
型保存到本地。以刚才我们已经调整好的参数和训练好的模型为例,我们可以这样来使用pickle:
在这里插入图片描述
在这里插入图片描述

使用Joblib保存和调用模型

在这里插入图片描述

三、分类案例:XGB中的样本不均衡问题

在之前的学习中,我们一直以回归作为演示的例子,这是由于回归是XGB的常用领域的缘故。然而作为机器学习中的
大头,分类算法也是不可忽视的,XGB作为分类的例子自然也是非常多。存在分类,就会存在样本不平衡问题带来的
影响,XGB中存在着调节样本不平衡的参数scale_pos_weight,这个参数非常类似于之前随机森林和支持向量机中
我们都使用到过的class_weight参数,通常我们在参数中输入的是负样本量与正样本量之比
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、 XGBoost类中的其他参数和功能

在这里插入图片描述
更多计算资源:n_jobs
nthread和n_jobs都是算法运行所使用的线程,与sklearn中规则一样,输入整数表示使用的线程,输入-1表示使用计
算机全部的计算资源。如果我们的数据量很大,则我们可能需要这个参数来为我们调用更多线程。

降低学习难度:base_score
base_score是一个比较容易被混淆的参数,它被叫做全局偏差,在分类问题中,它是我们希望关注的分类的先验概
率。比如说,如果我们有1000个样本,其中300个正样本,700个负样本,则base_score就是0.3。对于回归来说,
这个分数默认0.5,但其实这个分数在这种情况下并不有效。许多使用XGBoost的人已经提出,当使用回归的时候
base_score的默认应该是标签的均值,不过现在xgboost库尚未对此做出改进。使用这个参数,我们便是在告诉模型
一些我们了解但模型不一定能够从数据中学习到的信息。通常我们不会使用这个参数,但对于严重的样本不均衡问
题,设置一个正确的base_score取值是很有必要的。

生成树的随机模式:random_state
在xgb库和sklearn中,都存在空值生成树的随机模式的参数random_state。在之前的剪枝中,我们提到可以通过随
机抽样样本,随机抽样特征来减轻过拟合的影响,我们可以通过其他参数来影响随机抽样的比例,却无法对随机抽样
干涉更多,因此,真正的随机性还是由模型自己生成的。如果希望控制这种随机性,可以在random_state参数中输
入固定整数。需要注意的是,xgb库和sklearn库中,在random_state参数中输入同一个整数未必表示同一个随机模
式,不一定会得到相同的结果,因此导致模型的feature_importances也会不一致。

自动处理缺失值:missing
XGBoost被设计成是能够自动处理缺失值的模型,这个设计的初衷其实是为了让XGBoost能够处理稀疏矩阵。我们可
以在参数missing中输入一个对象,比如np.nan,或数据的任意取值,表示将所有含有这个对象的数据作为空值处
理。XGBoost会将所有的空值当作稀疏矩阵中的0来进行处理,因此在使用XGBoost的时候,我们也可以不处理缺失
值。当然,通常来说,如果我们了解业务并且了解缺失值的来源,我们还是希望手动填补缺失值。

总结

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

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

相关文章

2023前端vue面试题(边面边更)

Vue中key的作用 vue 中 key 值的作用可以分为两种情况来考虑: 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来实现元素切换的时候,如果切换前后含有相同类型的…

只用最适合的 | 主流 .NET 报表控件全面对比

随着 .NET 平台的出现,报表相关的开发控件随着而来,已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的3款 .NET报表控件:FastReport、Stimulsoft、水晶报表,给所有报表开发人员在做产品选…

家用洗地机哪款最好用?全球洗地机十大品牌

近年来,智能家用电器洗地机已经融入到我们生活中了,成为最受欢迎的清洁工具了,家用洗地机吸拖洗一体,不用先扫后拖那么麻烦,只需轻轻一推,就能把扫地、拖地、擦地的活全干了,操作简单&#xff0…

【iOS】—— 初识RAC响应式编程

RAC(ReactiveCocoa) 文章目录RAC(ReactiveCocoa)响应式编程和函数式编程的区别函数式编程响应式编程响应式编程的优点RAC操作1.利用button点击实现点击事件和传值2.RACSignal用法RACSignal总结:3.对于label的TapGestur…

Java | IO 模式之 JavaNIO 应用

文章目录NIO1 Java NIO 基本介绍2 NIO 和 BIO 的比较3 NIO 三大核心原理示意图3.1 Buffer缓冲区3.2 Channel(通道)3.3 Selector选择器3.4 总结4 NIO核心一:缓冲区(Buffer)4.1 缓冲区(Buffer)4.2 Buffer 类及其子类4.3 …

泛型与Map接口

Java学习之道 泛型 泛型这种参数类型可以用在类、方法和接口中,分别被称为泛型类,泛型方法,泛型接口 参数化类型:将类型由原来的具体的类型参数化,在使用/调用时传入具体的类型JDK5引入特性提供了安全检测机制&#xf…

[oeasy]python0097_苹果诞生_史蒂夫_乔布斯_沃兹尼亚克_apple_I

苹果诞生 回忆上次内容 上次时代华纳公司 凭借手中的影视ip和资本吞并了雅达利公司 此时 雅达利公司 曾经开发过pong的 优秀员工 乔布斯 还在 印度禅修 寻找自我 看到游戏行业 蓬勃发展 乔布斯 也想有自己的 一番天地 可是 他的机会在哪里呢?🤔 Jobs 跟着 Wozn…

顺序表——重置版

本期我们来实现数据结构的顺序表(这个之前写过一次,不过本期和之前可能会略有不同,但大体相同),大家可以看一下我们之前完成的顺序表 (6条消息) 顺序表及其多种接口的实现_顺序表类中实现接口方法_KLZUQ的博客-CSDN博客…

Linux环境下验证python项目

公司大佬开发的python rpa跑数项目,Windows运行没问题后,需要搭建一个linux环境进行验证,NOW START! Install VMware官网 下载好之后打开按步骤安装 最后一步会让填许可证(密钥),这里自行百…

Meta开放小模型LLaMA,性能超过GPT-3

论文地址:https://research.facebook.com/file/1574548786327032/LLaMA--Open-and-Efficient-Foundation-Language-Models.pdf 介绍 LLaMA,是Meta AI最新发布的一个从7B到65B参数的基础语言模型集合。在数以万亿计的token上训练模型,并表明…

运动跑步耳机哪种最好、5款最好用的运动耳机推荐

而作为一名运动爱好者,我非常喜欢在运动时听音乐,简直不要太轻松!不过在换了多款蓝牙耳机之后,我终于找到了几款非常适合运动的耳机,戴着它们运动,不仅不会出现不适感,还能享受清晰动听音乐&…

多个AOP修饰同一个方法

1、背景 之前的文章中,有网友提出了一个问题,同一个方法用多个AOP修饰,执行顺序是怎样的? 好问题,之前没有关注过,这里写一个demo跑一下看看 同时有一个衍生问题,多个AOP修饰,会生…

Linux常用命令--进程和计划任务管理

一、程序和进程的关系 1、程序 ①保存在硬盘、光盘等介质中的可执行代码和数据 ②静态保存的代码 2、进程 ①在cpu及内存中运行及进程代码 ②动态执行的代码 ③父(fork)、子进程,每个程序可以创建一个或多个进程 父进程和子进程的区别&am…

springboot如何获取websocket的header头信息

websocket协议与http协议类似,也有属于自己的头信息,如下图所示,为postman在连接时自定义的header: 那么在后端中,如何像http的HttpServletRequest一样来获取这个头信息的内容呢? 自定义一个WebSocket配置类&#xff…

【LeetCode】剑指 Offer 19. 正则表达式匹配 p124 -- Java Version

题目链接:https://leetcode.cn/problems/zheng-ze-biao-da-shi-pi-pei-lcof/ 1. 题目介绍(19. 正则表达式匹配) 请实现一个函数用来匹配包含. 和*的正则表达式。模式中的字符.表示任意一个字符,而’*表示它前面的字符可以出现任意…

图解LeetCode——剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

一、题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 二、示例 2.1> 示例: 【输入】nums [1,2,3,4] 【输出】[1,3,2,4] 【注】[3,1,2,4] 也是正确的…

基于vscode创建SpringBoot项目,连接postgresql数据库

1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客 4、基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAw…

最新的Windows docker安装方法

什么是Docker?关于Docker的相关概述,请看:Docker_面向架构编程的博客-CSDN博客在Windows10 or Windows11中安装docker主要就两步:1.安装wsl22. 安装docker一、安装WSL2安装wslwsl --install然后重启一下电脑在cmd窗口可以查看自己…

如何使用CVE-Tracker随时获取最新发布的CVE漏洞信息

关于CVE-Tracker CVE- Tracker是一款功能强大的CVE漏洞信息收集和更新工具,该工具基于自动化ps脚本实现其功能,可以帮助广大研究人员轻松获取到最新发布的CVE漏洞信息。 CVE-Tracker采用PowerShell开发,可以在操作系统启动的时候自动运行Mi…

计算机组成原理4小时速成5:系统总线,总线分类,数据总线,地址总线,控制总线,总线传输率

计算机组成原理4小时速成5:系统总线,总线分类,数据总线,地址总线,控制总线,总线传输率 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学…