XGBoost模型中参数stratify的作用

目录

  • 1.参数stratify的作用
  • 2.代码演示
  • 3. 为什么XGBoost从分类模型转成回归模型,这个参数要去掉呢?

1.参数stratify的作用

在使用XGBoost进行分类任务时,数据集通常会被分成训练集测试集。为了确保训练集和测试集中的类分布与原始数据集中的类分布一致,可以使用 train_test_split 函数中的 stratify 参数。
当数据集的类分布不均衡时,直接进行随机分割可能会导致训练集和测试集中类的比例不一致,从而影响模型的性能和评估结果。使用 stratify 参数可以确保分割后的训练集和测试集中的每个类的比例与原始数据集中相同。

2.代码演示

import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# 加载示例数据集
data = load_iris()
X = data.data
y = data.target

# 使用 stratify 参数进行分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)

# 转换为 DMatrix 格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置 XGBoost 参数
params = {
    'objective': 'multi:softmax',
    'num_class': 3,
    'eval_metric': 'mlogloss'
}

# 训练模型
bst = xgb.train(params, dtrain, num_boost_round=10)

# 进行预测
y_pred = bst.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

使用 train_test_split 函数,并通过 stratify=y 参数确保训练集和测试集中每个类的比例与原始数据集相同。

3. 为什么XGBoost从分类模型转成回归模型,这个参数要去掉呢?

在使用 XGBoost 进行分类和回归任务时,需要设置不同的参数来指定模型的类型。stratify 参数是用于数据集分割中的参数,它与模型的类型(分类或回归)无关。通常,在分类任务中使用 stratify 参数是为了保证训练集和测试集中各个类别的比例与原始数据集一致。

然而,当从分类任务切换到回归任务时,标签 y 是连续值而不是离散的类别,因此 stratify 参数就不再适用了,因为 stratify 只能用于分类任务中的类别平衡。在回归任务中,当进行数据集划分时,只需指定 test_size 和 random_state 即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS中多个tableView 嵌套滚动特性探索

嵌套滚动的机制 目前的结构是这样的,整个页面是一个大的tableView, Cell 是整个页面的大小,cell 中嵌套了一个tableView 通过测试我们发现滚动的时候,系统的机制是这样的, 我们滑动内部小的tableView, 开始滑动的时候&#xff0c…

想知道你的电脑能不能和如何升级RAM吗?这里有你想要的一些提示

考虑给你的电脑增加更多的RAM,但不确定从哪里开始?本指南涵盖了有关升级Windows PC或笔记本电脑中RAM的所有信息。 你需要升级RAM吗 在深入研究升级RAM的过程之前,评估是否需要升级是至关重要的。你是否经历过系统滞后、频繁的BSOD错误或应用程序和程序突然崩溃?这些症状…

Lock与ReentrantLock

在 Java 中,Lock 接口和 ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {pr…

聊一下Maven打包的问题(jar要发布)

文章目录 一、问题和现象二、解决方法(1)方法一、maven-jar-pluginmaven-dependency-plugin(2)方法二、maven-assembly-plugin 一、问题和现象 现在的开发一直都是用spring boot,突然有一天,要自己开发一个…

【CUDA】

笔者在学习Softmax实现时遇到了一个问题,很多文章直接将softmax的计算分成了五个过程,而没有解释每个过程的含义,尤其是在阅读这篇文章时,作者想计算最基本的softmax的效率,以展示可行的优化空间: 贴一个g…

MybatisX插件的简单使用教程

搜索mybatis 开始生成 module path:当前项目 base package:生成的包名,建议先独立生成一个,和你原本的项目分开 encoding:编码,建议UTF-8 class name strategy:命名选择 推荐选择camel:驼峰命…

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住, 没有任何报错信息,且无法 ctrl c 终止,只能通过后台 kill -9 杀死。 问题排查: 查看yum日志:yum -vv 软件包 会发现卡在 loading keyring from rpmdb,即load DB存在问题。 …

MSPM0G3507——MPU6050读取数据显示在OLED上

移植的立创L1306的部分代码,亲测能用,要源码的评论即可,在CCSTHEIA打开

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止⽂档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “…

推荐几款漂亮的代码字体

Visual Studio Code 中字体看时间长了就会产生幻觉,于是今天看到有人推荐漂亮的代码字体,于是自己也推荐几款: 需要注意的是,大部分网上的教程都建议使用混合字体,即使用微软雅黑与某种等宽字体混合。但事实上&#x…

(ECCV,2022)Mask-CLIP:从CLIP中提取自由密集标签

文章目录 Extract Free Dense Labels from CLIP相关资料摘要引言方法Mask-CLIPMask-CLIP 实验 Extract Free Dense Labels from CLIP 相关资料 代码:https://github.com/chongzhou96/MaskCLIP 论文:https://arxiv.org/abs/2112.01071 摘要 对比语言-…

接口测试分析、设计以及实现

接口相关理论 ui功能测试和接口测试哪个先执行?–为什么 结论:接口测试先执行 原因:ui功能测试需要等待前端页面开发完成、后台接口开发完后且前端与后端联调完成。ui功能测试与接口测试的区别? ui功能:功能调用&am…

windows上传app store的构建版本简单方法

我们在上传app store上架,或上传到testflight进行ios的app测试的时候,需要mac下的上传工具上传ipa文件到app store的构建版本上。 然而windows电脑这些工具是无法安装的。 因此,假如在windows上开发hbuilderx或uniapp的应用,可以…

程序升级bootloader

文章目录 概述什么是bootloader?为什么用?bootloader启动流程图步骤 下载过程代码获取本地配置信息获取主机传过来的配置信息bootloader发送2给上位机,上位机发送文件给bootloader根据网站复制CRC 烧写flasherase启动编译问题 概述 用keil编…

Halcon 产品周围缺口检测

*读取一张图像read_image (Image, 原图.jpg)*获取图像大小get_image_size(Image, Width, Height)*关闭已经打开的窗口dev_close_window ()*打开新窗口dev_open_window(0, 0, Width, Height, black, WindowHandle) //打开指定大小的窗口*对图像进行阈值操作threshold (Image, R…

【eMTC】eMTC 窄带以及带宽的关系

1 概述 eMTC 传输进行通信时,一般采用1.4M带宽,在和LTE小区联合部署时,需要将LTE的带宽分割成以1.4M带宽为粒度的单位,这个单位在协议上叫做窄带。 2 窄带定义 3 参考文献 36.211

图片高效管理神器,随机高度切割,一键生成灰色图片,个性化处理随心所欲

在数字化时代,图片已成为我们生活和工作中不可或缺的一部分。然而,面对海量的图片资源,如何高效管理、快速处理,成为了许多人头疼的问题。今天,我们为您带来了一款全新的图片高效管理神器_——首助编辑高手&#xff0c…

【沐风老师】3DMAX样条线增强工具SplinePro使用方法详解

3DMAX样条线增强工具SplinePro使用教程 3DMAX样条线增强工具SplinePro,允许创建选定的多条样条曲线形状的轮廓并删除交叉点。 【适用版本】 3dMax2019 - 2025 【安装方法】 1.解压缩后,确认SplinePro-0.2.0.mse和logo.png两个文件在同一文件夹中。 2.…

python+django 环境搭建以及post接口封装

1、搭建pythondjango环境 python 3.7.9的版本 具体参考之前的安装教程 django 使用 pip install django 会自动安装 检验安装版本: python -m django --version 2、创建django项目 django-admin startproject projectname 启动项目:python manage.py…

verilog读写文件注意事项

文章目录 想要的16进制数是文本格式提供的文件,想将16进制数提取到变量内,想要的16进制数是文本格式提供的文件,想将16进制数提取到变量内,想要的16进制数是二进制格式提供的文件,想将16进制数提取到变量内&#xff0c…