机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战,以及XGBClassifier分类器的调优策略

news2025/1/19 20:35:20

大家好,我是微学AI,今天给大家介绍一下机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战,以及XGBClassifier分类器的调优策略。XGBClassifier是基于eXtreme Gradient Boosting (XGBoost)算法的分类器模型,在机器学习领域有着广泛应用。作为一种迭代的决策树提升方法,XGBClassifier通过集成多个弱学习器(通常是 CART 决策树)来构建强学习器,以实现对各类分类问题的高效预测。

在模型结构上,XGBClassifier采用梯度提升框架,通过优化损失函数来逐步训练一系列决策树。每一步,模型都会拟合前一步骤残差,从而减小整体预测误差。此外,它引入了正则化项以控制模型复杂度,防止过拟合,包括L1和L2正则化,以及列抽样(column subsampling)和行抽样(row subsampling)等技术。

XGBClassifier支持多种评价指标,如准确率、精确率、召回率、F1值等,并且具备自定义损失函数的能力,使其能够灵活适应多类别分类、二分类以及其他各种分类任务。同时,该模型还提供了丰富的超参数供用户调整,以优化模型性能,如学习率、树的深度、最小叶子节点样本数等。XGBClassifier以其卓越的性能、高效的计算速度以及强大的泛化能力,在众多数据科学竞赛和实际业务场景中展现出显著优势,成为分类问题求解的常用工具之一。
在这里插入图片描述

文章目录

  • 一、XGBClassifier模型概述
    • XGBClassifier定义
    • 二、XGBClassifier优势
  • 三、XGBClassifier模型结构详解
    • XGBClassifier的调参建议
    • 损失函数与优化目标
    • 正则化与节点分裂策略
  • 四、XGBClassifier实际应用案例
    • 金融风控领域
    • 医疗诊断领域
    • 推荐系统领域
  • 五、XGBClassifier分类器模型的数学原理
  • 六、XGBClassifier分类器模型的代码实现
  • 七、总结

一、XGBClassifier模型概述

XGBClassifier定义

XGBClassifier是基于eXtreme Gradient Boosting (XGBoost)算法的分类器,它是梯度提升树(Gradient Boosting Decision Tree, GBDT)的一种高效实现。XGBoost通过并行计算、列抽样、正则化和缺失值处理等一系列优化技术,极大地提升了模型训练速度和预测准确率。

在机器学习领域中,XGBClassifier是一个监督学习模型,主要用于解决二分类或多分类问题。它通过迭代构建弱学习器(通常是决策树),并将这些弱学习器以加权的方式组合成一个强学习器。在每一轮迭代中,模型会根据前一轮的学习结果调整数据分布和新引入的弱学习器的复杂度,以此逐步提升整体模型的表现。

假设我们正在建立一个系统来预测用户是否会购买某款产品。我们可以使用用户的年龄、性别、购物历史、浏览时间等特征作为输入数据,然后利用XGBClassifier进行训练。模型会生成一系列“简单规则”(即弱学习器,可以理解为决策树),比如“年轻女性用户如果经常浏览该产品且停留时间较长,则更可能购买”。通过不断迭代和优化这些规则,并将它们综合起来,最终形成一个强大的预测模型,能够较为准确地预测出每位用户是否会产生购买行为。

二、XGBClassifier优势

XGBClassifier是基于eXtreme Gradient Boosting (XGBoost)算法的分类器,它是梯度提升树(Gradient Boosting Decision Tree, GBDT)的一种高效实现。该模型通过集成多个弱学习器(通常是决策树)来构建一个强大的预测模型,每个新加入的学习器都在减少前一步骤中模型预测错误的基础上进行优化。其主要优势包括:

  1. 高效性:XGBClassifier采用了一种特殊的优化技术,能够快速处理大规模数据集,并且在保持高准确率的同时,对内存和计算资源的需求相对较低。

  2. 灵活性与可调优性:它提供了丰富的超参数供用户调整,如学习率、树的深度、正则化项等,以适应不同的数据特性和任务需求。

  3. 并行计算:XGBoost支持并行计算,能够在多核CPU或GPU上加速训练过程,大大提升了训练效率。

  4. 缺失值处理:XGBClassifier内置了对缺失值的有效处理机制,无需预处理即可直接处理含有缺失值的数据。

  5. 鲁棒性强:对于过拟合问题有较好的控制能力,通过正则化和早停策略可以有效防止过拟合现象。

假设我们正在运营一家电商平台,需要预测用户是否会购买某款产品。我们可以使用XGBClassifier模型来解决这个问题。首先,收集用户的各项特征数据,如年龄、性别、浏览历史、购物频率等。然后,利用XGBClassifier的强大集成学习能力,将这些复杂的用户行为信息转化为一系列简单的决策规则(即决策树),并通过不断迭代优化这些规则,最终形成一个精准的预测模型。即使部分用户数据存在缺失,XGBClassifier也能妥善处理。同时,由于其高效的并行计算能力和良好的抗过拟合特性,使得我们在短时间内就能得到高质量的预测结果,从而为个性化推荐提供有力支持。

三、XGBClassifier模型结构详解

XGBClassifier的调参建议

XGBClassifier是XGBoost库中的一个基于梯度提升的集成学习分类器,它是一个强大的机器学习模型,通常需要进行适当的参数调整以达到最佳性能。以下是一些常见的调参建议:

  1. 学习率 (learning_rate):
    • 学习率决定了每个弱学习器对最终模型的影响程度。较小的学习率通常需要更多的弱学习器(即树的数量),但可以提高模型的泛化能力。常见的学习率设置在0.01到0.3之间。
  2. 树的数量 (n_estimators):
    • 这个参数表示基学习器的数量,即决策树的数量。增加树的数量可以减少偏差,但可能会增加过拟合的风险。一般从100或200开始,根据验证集的性能逐渐增加。
  3. 树的深度 (max_depth):
    • 树的深度决定了模型复杂度。较深的树可以捕捉更多的特征关系,但也更容易过拟合。通常设置在3到10之间,但最好是交叉验证来确定最佳值。
  4. 子采样率 (subsample):
    • 这个参数用于训练每棵树时抽取样本的比例。较小的子采样率可以减少过拟合,增加模型的泛化能力。常见的设置在0.5到1之间。
  5. 列采样率 (colsample_bytree):
    • 类似于子采样,这是用于训练每棵树时抽取特征的比例。它有助于降低过拟合,增强模型的稳定性。通常设置在0.5到1之间。
  6. 正则化参数 (gamma, alpha, lambda):
    • gamma是节点分裂所需的最小损失减少量。较大的gamma值会导致模型更加保守。
    • alpha是L1正则化项的权重,用于控制叶节点的权重。
    • lambda是L2正则化项的权重,用于控制模型的复杂度。
  7. 最小子分裂重量 (min_child_weight):
    • 这个参数用于控制叶子节点所需的的最小样本权重和。较大的值可以避免模型学习到过于具体的细节。
  8. 缺失值的处理 (missing, scale_pos_weight):
    • missing用于指定缺失值的默认值。
    • scale_pos_weight用于处理类别不平衡问题,其值应该设为负样本量与正样本量的比例。
      调参时,推荐使用交叉验证来评估不同参数组合的性能,并使用网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)来自动化参数调整过程。此外,可以监控验证集的性能来避免过拟合,并使用早期停止(early_stopping_rounds)来在验证集性能不再提升时停止训练。

损失函数与优化目标

XGBClassifier是基于梯度提升决策树的机器学习模型,它是XGBoost库中的一种分类算法实现。该模型的核心思想是通过迭代地构建多个弱学习器(通常是 CART 决策树),并将它们组合起来形成一个强学习器。

模型结构方面,XGBClassifier采用加法模型框架,即在每一轮迭代中,新的决策树会尝试拟合前一轮预测结果与真实标签之间的残差,以此逐步提升模型的整体性能。其结构包含多个 boosting 回归树,每个回归树的输出结果会被累加到最终预测值上。

损失函数方面,XGBClassifier支持多种损失函数,如二分类问题常用的逻辑回归损失函数(Binary: Logloss),多分类问题的softmax函数等。损失函数的选择取决于具体的任务需求,其主要作用是衡量模型预测结果与实际标签之间的差异,并在训练过程中指导模型优化。

优化目标则是最小化损失函数,同时引入正则化项以防止过拟合,即模型的目标是最小化预测误差和模型复杂度之和。在训练过程中,XGBoost利用泰勒展开对损失函数进行二阶近似,并结合贪婪的贪心策略选择最优分割点,从而高效地优化模型。

假设我们要预测顾客是否会购买某种商品(二分类问题)。XGBClassifier就像一位经验丰富的销售顾问,他首先做出初步判断(第一颗决策树),然后根据初次判断与实际购买情况的差异(损失函数)不断调整策略(迭代生成新的决策树)。同时,为了避免过于复杂的推销策略导致顾客反感(防止过拟合),他会自我约束,寻求最简洁有效的说服方式(正则化)。通过一轮轮的学习和改进,这位销售顾问的预测能力将越来越强。

正则化与节点分裂策略

XGBClassifier是基于梯度提升决策树(Gradient Boosting Decision Tree, GBDT)的机器学习模型,它是XGBoost库中的分类器实现。该模型的核心特点是通过集成多个弱学习器(即浅层决策树)来构建一个强大的预测模型,并在训练过程中引入了正则化和优化的节点分裂策略。

  1. 正则化:在XGBClassifier中,正则化主要体现在两个方面,一是L1和L2正则化,用于控制模型复杂度,防止过拟合。L1正则化通过对权重参数进行稀疏化处理,实现特征选择;L2正则化则是通过约束权重参数的平方和,使得模型参数相对较小且稳定。二是通过设置最大深度、最小叶子节点样本数等参数限制单个决策树的复杂度。

  2. 节点分裂策略:XGBoost采用了一种新颖的贪心算法寻找最优分割点,不仅考虑了特征分裂后增益的大小,还引入了二阶泰勒展开近似损失函数,以更精确地衡量每个特征分裂对模型性能的提升程度。此外,它还支持并行计算,大大提高了模型训练速度。

四、XGBClassifier实际应用案例

金融风控领域

在金融风控领域,XGBClassifier是一种广泛应用的机器学习模型。它基于梯度提升决策树算法,能够有效处理大量特征数据,并对信贷风险、欺诈交易检测等任务进行精准预测。

某银行在审批个人贷款申请时,会面临如何准确评估申请人违约风险的问题。通过收集包括但不限于申请人的年龄、收入、职业、信用历史、负债情况等多个维度的数据,利用XGBClassifier进行训练建模。模型通过对这些特征的学习和权重分配,可以预测出每个申请人的违约概率。银行则根据这个预测结果,决定是否批准贷款以及设定合理的贷款利率,从而有效控制信贷风险,降低坏账损失。

生活例子生动说明:假设你是一个水果店老板,每天都有很多人来赊账买水果,你需要判断哪些人能按时还款,哪些人可能赖账。这时,你可以参考一些信息,比如他们的购买记录(信用历史)、工作稳定性(职业)、每次购买金额与他们日常收入的关系(负债情况)等。XGBClassifier就像你的智能助手,帮你分析这些信息,给出每个人可能赖账的概率,这样你就知道应该给谁赊账,给谁不能赊,避免因频繁赖账导致的经济损失。

医疗诊断领域

在医疗诊断领域,XGBClassifier是一种强大的机器学习工具,常用于疾病预测和分类任务。例如,在癌症早期筛查项目中,我们可以利用大量的患者临床数据(如年龄、性别、生活习惯、家族病史、血液检测指标、影像学特征等多维度信息)作为输入特征,通过训练XGBClassifier模型,来预测患者是否患有某种特定癌症。

假设我们正在构建一个肺癌早期预测系统。每一条样本数据代表一个个体,其特征包括年龄、吸烟状况、职业暴露史、肺部CT图像的纹理特征等。XGBClassifier会根据历史病例的学习,自动挖掘这些特征之间的复杂关系,并据此建立预测模型。当新的患者数据输入时,模型将输出该个体患肺癌的概率,辅助医生进行初步诊断和决策。

生活中的类比:想象一下你是一位经验丰富的厨师,要判断一道菜是否适合糖尿病患者食用。你可以根据食材种类(比如糖分、脂肪含量等特征)、烹饪方式(煎、炒、蒸等特征)等信息做出判断。而XGBClassifier就像是你的智能助手,它通过学习你过去对菜品的判断经验,逐渐学会并掌握影响糖尿病患者饮食选择的关键因素,从而在你忙碌时,能准确快速地帮你筛选出适宜的菜品。

推荐系统领域

在推荐系统领域中,XGBClassifier是一种常用的机器学习模型,它基于梯度提升决策树算法,能够有效处理大规模数据集并进行高效预测。

具体应用案例:假设我们正在构建一个电影推荐系统,目标是预测用户对未观看电影的评分或喜好程度。首先,我们会收集大量的用户历史行为数据,如用户的观影记录、评分、浏览时间等特征。然后,利用XGBClassifier对这些数据进行训练。在训练过程中,模型会生成多棵决策树,每棵树都在前一棵树的基础上优化预测结果,通过集成学习的方式提高整体预测性能。

想象一下,你是一位在线视频平台的用户,平台使用了XGBClassifier作为推荐引擎的一部分。当你在平台上观看并评价了一系列电影后,系统开始运用XGBClassifier模型分析你的观影习惯和偏好(比如喜欢科幻片、不喜欢恐怖片,更偏爱高评分电影等)。模型通过学习海量用户的行为模式,精准地“猜”出你可能对哪些尚未观看的电影感兴趣,并将这些电影优先推荐给你,从而实现个性化推荐,提升用户体验。

五、XGBClassifier分类器模型的数学原理

XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升树(Gradient Boosting Decision Tree, GBDT)算法的高效实现,其核心模型XGBClassifier主要用于分类任务。由于LaTeX公式较为复杂,下面仅简要介绍XGBoost的核心数学原理:

在XGBoost中,目标函数(obj)可以表示为训练损失函数(L)与正则化项(Ω)之和:

O b j ( θ ) = ∑ i = 1 n L ( y i , y ^ i ( t ) ) + Ω ( f ) Obj(\theta) = \sum_{i=1}^{n} L(y_i, \hat{y}_i^{(t)}) + \Omega(f) Obj(θ)=i=1nL(yi,y^i(t))+Ω(f)

其中, n n n是样本数量, y ^ i ( t ) \hat{y}_i^{(t)} y^i(t)是在第 t t t轮迭代时对第 i i i个样本预测的值, y i y_i yi是实际标签, f f f代表所有树的线性组合。

对于二分类问题,常用的损失函数如 logistic loss 可以写作:

L ( y i , y ^ i ( t ) ) = − [ y i log ⁡ ( y ^ i ( t ) ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ( t ) ) ] L(y_i, \hat{y}_i^{(t)}) = -[y_i\log(\hat{y}_i^{(t)}) + (1-y_i)\log(1-\hat{y}_i^{(t)})] L(yi,y^i(t))=[yilog(y^i(t))+(1yi)log(1y^i(t))]

正则化项用于控制模型复杂度,防止过拟合,通常包括叶子节点权重的L1正则和L2正则:

Ω ( f ) = γ T + 1 2 λ ∑ j = 1 T ∑ k = 1 K w j 2 \Omega(f) = \gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}\sum_{k=1}^{K}w_j^2 Ω(f)=γT+21λj=1Tk=1Kwj2

其中, T T T是树的总数量, K K K是每棵树的叶子节点数, w j w_j wj是第 j j j个叶子节点的分数, γ \gamma γ λ \lambda λ分别是控制树的复杂度和叶节点权重的正则化参数。

在每一轮迭代中,XGBoost通过优化目标函数来生成一个新的弱学习器(决策树),并将其累加到现有的模型中,以此逐步提升模型的表现。

以上是一个简化的数学描述,实际上XGBoost还包括许多优化策略,例如列采样、行采样、直方图近似等,以提高计算效率和模型性能。

六、XGBClassifier分类器模型的代码实现

实际上,XGBoost库并不基于PyTorch框架,而是基于C++和Python实现的梯度提升库,其核心算法是Gradient Boosting Decision Tree (GBDT)。以下是一个使用XGBoost库中的XGBClassifier进行分类任务的Python样例代码:

# 导入所需的库
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

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

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 将数据转换为DMatrix格式,这是XGBoost所要求的数据格式
D_train = xgb.DMatrix(X_train, label=y_train)
D_test = xgb.DMatrix(X_test, label=y_test)

# 定义XGBClassifier模型参数
params = {
    'objective': 'multi:softmax',  # 分类问题
    'num_class': 3,  # 类别数量
    'max_depth': 3,  # 树的最大深度
    'eta': 0.3,  # 学习率
    'verbosity': 1,
}

# 训练模型
model = xgb.train(params, D_train, num_boost_round=100)

# 预测
preds = model.predict(D_test)

# 将预测结果转换为整数类别(取概率最高的类别)
preds = np.argmax(preds, axis=1)

# 计算准确率
accuracy = accuracy_score(y_test, preds)
print("Accuracy: %.2f%%" % (accuracy * 100.0))

请注意,以上可以在PyTorch项目中集成XGBoost作为预处理或后处理步骤的一部分。

七、总结

XGBClassifier是一种基于XGBoost算法的高效分类器模型,在机器学习领域应用广泛。其核心机制是运用梯度提升框架集成多个弱学习器——CART决策树,通过迭代优化损失函数并拟合残差,以提高预测准确性并防止过拟合。模型内置正则化技术和行、列抽样策略,有效控制模型复杂度。XGBClassifier支持多类别的评价指标选择与自定义损失函数,具有高度灵活性,适用于各类分类任务。此外,丰富的超参数配置选项使得用户可以根据具体需求优化模型性能。凭借出色的性能、高速计算能力和卓越的泛化能力,XGBClassifier在各类数据科学竞赛及实际业务场景中表现出色,成为解决分类问题的首选工具之一。

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

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

相关文章

成为图像SoC大牛有多难?

IPC(Internet Protocol Camera,即网络摄像机)芯片架构师需要具备一系列跨学科的知识和技能。IPC芯片架构师的工作涉及到先进工艺、低功耗、SoC架构、处理器架构、图像处理、视频压缩、网络通信以及嵌入式系统设计等多个领域。以下是一些关键的…

Ubuntu22.04中基于Qt开发Android App

文章目录 前言在Ubuntu22.04中配置开发环境案例测试参考 前言 使用Qt开发手机应用程序是一种高效且灵活的选择。Qt作为一个跨平台的开发框架,为开发者提供了统一的开发体验和丰富的功能库。首先,Qt的跨平台性让开发者可以使用相同的代码库在不同的操作系…

收藏|深入浅出分析光刻机

光刻技术是指在光照作用下,借助光致抗蚀剂(又名光刻胶)将掩膜版上的图形转移到基片上的技术。 光刻机是半导体生产制造的主要生产设备之一,也是决定整个半导体生产工艺水平高低的核心技术机台。半导体技术发展都是以光刻机的光刻线…

【测试开发学习历程】python流程控制

前言:写到这里也许自己真的有些疲惫了,但是人生不就是像西西弗斯推石上山一样的枯燥乏味吗? 在python当中的流程控制主要包含以下两部分的内容: 条件判断 循环 1 条件判断 条件判断用if语句实现,if语句的几种格式…

微软detours代码借鉴点备注

comeasy 借鉴点1 Loadlibray的时间选择 注入库wrotei.dll,为了获取istream的接口,需要loadlibrary,但是在dllmain中是不建议这样做的。因此,动态库在dllmain的时候直接挂载了comeasy.exe的入口 //获取入口 TrueEntryPoint (i…

太阳能光伏储能系统:全周期一站式解决方案

随着全球能源结构的不断变革,清洁能源的重要性日益凸显。太阳能光伏储能系统作为一种高效、环保的能源解决方案,正逐渐成为推动能源转型的关键力量。本文将详细介绍太阳能光伏储能系统的全周期一站式解决方案,以期为读者提供全面、深入的了解…

动态多目标优化:动态约束多目标优化测试集DCP1-DCP9的TruePF(提供MATLAB代码)

一、进化动态约束多目标优化测试集DCP1-DCP9 参考文献: [1]G. Chen, Y. Guo, Y. Wang, J. Liang, D. Gong and S. Yang, “Evolutionary Dynamic Constrained Multiobjective Optimization: Test Suite and Algorithm,” in IEEE Transactions on Evolutionary Com…

聚能共创下一代智能终端操作系统 软通动力荣膺“OpenHarmony优秀贡献单位”

近日,由开放原子开源基金会指导,以“开源共享未来”为主题的OpenHarmony社区年会在北京成功举办。本次活动汇集OpenHarmony项目群共建单位及生态伙伴等多方力量,旨在对2023年度OpenHarmony年度开源事业全面总结的同时,吸引更多伙伴…

VSCode如何调试C#代码?

1、启动VSCode; 一、创建项目 1、创建一个文件夹(workspace): 2、进入这个文件夹 cd tt1 3、创建解决方案 dotnet new sln -o MyApp 4、进入解决方案 cd .\MyApp\ 5、创建项目(在此假定为一个命令行的项目) dotnet new …

PCIe 7.0|不要太卷,劝你先躺平

PCIe 6.0都已经发布了2-3年了,目前业内生态还没完全建立。甚至很多人都还没用上PCIe 5.0呢! 近日,PCIe 7.0 ver0.5版本已经开放,同时宣布马不停蹄准备在2025年完成正式SPEC规范发布。 回顾PCIe 7.0变更,PCI-SIG在2022年…

力扣1448---统计二叉树中好节点的数量(Java、DFS、中等题)

题目描述: 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,4,3,null,1,5] 输出…

SSM项目实战——哈哈音乐(四)前台模块开发

1、项目准备 ①导入依赖和前端资源 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x…

Educational Codeforces Round 162 (Rated for Div. 2) ----- E. Count Paths --- 题解

E. Count Paths&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 根据题目中定义的美丽路径&#xff0c;我们可以发现路径只有两种情况&#xff1a; 当前结点作为起始结点&#xff0c;那我们只需要知道它的子树下有多少个相同颜色的结点&#xff0c;并且相同颜色的结…

攻防世界:mfw[WriteUP]

根据题目提示考虑是git库泄露 这里在地址栏后加.git也可以验证是git库泄露 使用GitHack工具对git库进行恢复重建 在templates目录下存在flag.php文件&#xff0c;但里面并没有flag 有内容的只有主目录下的index.php index.php源码&#xff1a; <?phpif (isset($_GET[page…

2024年最新版FL Studio21.2.3 Build 4004 for Mac 版激活下载和图文激活教程

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

重读Java设计模式: 桥接模式详解

引言 在软件开发中&#xff0c;经常会遇到需要在抽象与实现之间建立连接的情况。当系统需要支持多个维度的变化时&#xff0c;使用传统的继承方式往往会导致类爆炸和耦合度增加的问题。为了解决这一问题&#xff0c;我们可以使用桥接模式。桥接模式是一种结构型设计模式&#…

机器学习中的GBDT模型及其优缺点(包含Python代码样例)

目录 一、简介 二、优缺点介绍 三、Python代码示例 四、总结 一、简介 GBDT&#xff08;Gradient Boosting Decision Tree&#xff09;是一种集成学习算法&#xff0c;被广泛应用于机器学习中的回归和分类问题。它由多个决策树组成&#xff0c;每个决策树都通过迭代逐渐提升…

巧用 STM32CubeIDE 之编译警告

1. 前言 编译警告对于工程师们来说&#xff0c;是再常见不过的了。对于严谨的工程师们来说&#xff0c;任何warning 都是不可忽视的。 2. 巧妙使用 warning 在 STM32CubeIDE 中&#xff0c;我们可以通过主动 warning&#xff08;甚至 error&#xff09;的方式来通知工程师&a…

计算机网络-TCP基础、三次挥手、四次握手过程

TCP基础 定义&#xff1a;TCP是面向连接的、可靠的、基于字节流的传输层通信协议。这意味着在发送数据之前&#xff0c;TCP需要建立连接&#xff0c;并且它能确保数据的可靠传输。此外&#xff0c;TCP将数据视为无结构的连续字节流。面向连接&#xff1a;TCP只能一对一进行连接…

ES6中数组新增的扩展和方法

文章目录 一、扩展运算符的应用二、构造函数新增的方法Array.from()Array.of()三、实例对象新增的方法copyWithin()find()、findIndex()fill()entries()&#xff0c;keys()&#xff0c;values()includes()flat()&#xff0c;flatMap()四、数组的空位五、sort排序稳定性 参考文献…