当前位置: 首页 > news >正文

用CatBoost - shap集成模型解锁分类任务的秘密

CatBoost-shap集成模型用于分类任务,对模型和变量用shap进行解释 Python 代码,自带数据集可以直接运行 所有图所见即所得

在数据科学领域,理解模型的决策过程与构建高精度模型同样重要。今天咱们就来聊聊如何利用CatBoost - shap集成模型进行分类任务,并且通过shap值来解释模型和变量。

1. 环境准备与数据集导入

咱们先导入需要的库,这里会用到catboost库来构建模型,shap库来解释模型,以及一些常用的数据处理和可视化库。

import numpy as np import pandas as pd import shap from catboost import CatBoostClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt

为了方便展示,咱们直接使用sklearn自带的鸢尾花数据集。这个数据集包含了4个特征变量和1个分类标签,非常适合做简单的分类演示。

iris = load_iris() X = pd.DataFrame(iris.data, columns=iris.feature_names) y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

这里先把数据集分成训练集和测试集,testsize = 0.2意味着20%的数据用于测试,randomstate = 42保证了每次运行代码,数据集分割的结果是一样的,便于复现。

2. 构建CatBoost分类模型

model = CatBoostClassifier(iterations = 100, learning_rate = 0.1, depth = 6, random_seed = 42) model.fit(X_train, y_train, eval_set=(X_test, y_test), use_best_model=True, early_stopping_rounds = 10)

在构建CatBoostClassifier时,咱们设置了一些参数。iterations是迭代次数,这里设置为100;learningrate学习率设为0.1,它控制每次迭代中模型参数更新的步长;depth树的深度设为6,决定了模型的复杂度;randomseed确保每次训练模型的随机性是一致的,方便调试和对比结果。

CatBoost-shap集成模型用于分类任务,对模型和变量用shap进行解释 Python 代码,自带数据集可以直接运行 所有图所见即所得

fit函数中,我们不仅传入了训练数据Xtrainytrain,还设置了验证集evalset,使用usebestmodel = True会保存最佳模型,earlystopping_rounds = 10表示如果在10轮迭代内验证集的性能没有提升,就停止训练,防止过拟合。

3. 使用Shap解释模型

explainer = shap.Explainer(model) shap_values = explainer(X_test)

shap.Explainer初始化一个解释器,然后将测试集Xtest传入,得到每个样本的shapvalues。Shap值衡量了每个特征对模型预测结果的影响程度。

4. 可视化Shap值

全局特征重要性

shap.summary_plot(shap_values, X_test) plt.show()

shap.summary_plot展示了所有特征的Shap值分布,从这个图中可以直观地看出哪些特征对模型的预测影响较大。图中越靠上的特征平均Shap值越大,对模型预测结果的影响也就越大。

单个样本解释

index = 0 shap.waterfall_plot(explainer.expected_value[y_test[index]], shap_values.values[index], feature_names = X_test.columns) plt.show()

这部分代码对单个样本进行解释。waterfallplot展示了模型是如何根据各个特征的Shap值,从基础预测值(explainer.expectedvalue)一步步得到最终预测值的。通过这个图,我们可以深入了解模型针对某一个具体样本的决策过程。

通过以上步骤,我们不仅构建了一个用于分类任务的CatBoost模型,还利用Shap对模型和变量进行了全面的解释,让模型不再是黑盒,而是我们可理解、可信赖的数据分析工具。希望大家在自己的项目中也能充分利用这些方法,挖掘数据背后更多的价值。

http://www.jsqmd.com/news/488905/

相关文章:

  • Alphacam阿尔法门板设计软件教学视频|CDM/VBA编程教程+智能自动排版功能详解
  • 0605-四种波形发生器(占空比可调+固频)-系统设计(51+数码管+DA0832+KEY3)
  • 打工人必备:这个Python小工具让你实时看到每分钟赚多少钱(附完整源码)
  • 会玩桌球辅助线工具Pro版|安卓专用万能台球瞄准线软件
  • LibreNMS实战指南:从零搭建企业级网络监控系统
  • 代码人生:程序员深夜的哲学思考
  • AIGlasses_for_navigation实战:Python爬虫自动采集训练数据与场景图片
  • Comsol 中锂枝晶与流动耦合下的电势场、浓度场及枝晶形貌探索
  • COMSOL随机裂隙双重介质注浆数值模拟
  • 如何保证多线程安全
  • Carsim与Matlab/Simulink联合仿真在四轮电动汽车转向失效容错控制中的应用
  • 【笔记】用cursor手搓cursor(二)也就是龙虾育种
  • Fish Speech 1.5实战案例:游戏NPC多角色语音批量克隆工作流
  • 基于比例谐振型自抗扰控制GI ADRC的谐波抑制仿真模型
  • Qwen3-14b_int4_awq部署避坑:常见vLLM启动失败原因与Chainlit连接超时解决
  • 使用KNN - shap分类器解决多分类问题:基于Python自带数据集的实践
  • 搭建虚拟环境Linux
  • BootLoader上位机源码,HEX烧录刷写,基于LabVIEW和USBCAN FD-200U开发BootLoader刷写
  • uni-app Android应用在华为应用市场上架时隐私权限声明的最佳实践
  • 【小白量化机器人】部署本地大模型及设计一个【可爱聊天助手】
  • WeKnora问题解决:如何让AI严格按你给的文本回答问题
  • 嵌入式——04 网络编程
  • π型衰减器:高速ADC信号链的宽带匹配与无源衰减设计精要
  • FireRedASR Pro多语言识别效果评测:中英日韩等语种实测
  • 探索基于三菱 PLC 和组态王的锅炉控制系统
  • 探索SLM增材制造的ANSYS Fluent模拟之旅
  • 微信小程序横屏模式下登录强制竖屏后的界面方向恢复方案
  • 10分钟带你快速搭建第一个云服务器,手把手教程
  • Git LFS实战指南:高效管理Unity项目中的大型资源文件
  • 影墨·今颜实操案例:为国货美妆品牌定制‘水墨腮红’风格图