news 2026/8/11 22:49:44

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用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对模型和变量进行了全面的解释,让模型不再是黑盒,而是我们可理解、可信赖的数据分析工具。希望大家在自己的项目中也能充分利用这些方法,挖掘数据背后更多的价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:41:25

Android学习3其他布局与中级控件

其他布局 相对布局 RelativeLayout 子视图根据其他视频或者父容器继续相对位置进行定位。xml属性RelativeLayout定义说明layout_toLeftOfLEFT_OF当前视图在指定视图的左边layout_toRightOfRIGHT_OF当前视图在指定视图的右边layout_belowBELOW当前视图在指定视图的上方layout_ab…

作者头像 李华
网站建设 2026/7/14 15:41:27

会玩桌球辅助线工具Pro版|安卓专用万能台球瞄准线软件

温馨提示:文末有联系方式软件核心功能:智能辅助瞄准线与延长线 本款台球辅助工具主打高精度图像识别技术,可实时生成精准的击球辅助线与目标球延长线,大幅提升瞄准效率与进球率,尤其适用于新手进阶与高手复盘分析。全面…

作者头像 李华
网站建设 2026/7/14 15:41:26

探索基于三菱 PLC 和组态王的锅炉控制系统

No.951 基于三菱PLC和组态王锅炉控制系统在工业自动化领域,锅炉控制系统的稳定性与高效性至关重要。今天咱就来聊聊基于三菱 PLC 和组态王构建的锅炉控制系统,这可是个超实用的组合。 三菱 PLC 在锅炉控制中的核心作用 三菱 PLC(可编程逻辑控…

作者头像 李华
网站建设 2026/7/14 15:41:26

openYuanrong:多语言运行时独立部署以库集成简化 Serverless 架构 拓扑感知调度:提升函数运行时性能

一、传统 Serverless 的痛点 在传统的 Serverless 架构中,运行时通常采用独立进程或容器化的部署方式。这种模式存在以下问题: 1. 架构复杂 2. 通信开销大 3. 运维门槛高 二、openYuanrong 的设计理念2. 核心优势 零通信开销: 函数调用直接在…

作者头像 李华
网站建设 2026/7/14 15:41:29

Phi-3-vision-128k-instruct惊艳案例分享:128K上下文下的复杂图表深度推理

Phi-3-vision-128k-instruct惊艳案例分享:128K上下文下的复杂图表深度推理 1. 模型能力概览 Phi-3-Vision-128K-Instruct是目前最先进的轻量级开放多模态模型,专为处理复杂图文推理任务而设计。这个模型最引人注目的特点是支持长达128K的上下文窗口&am…

作者头像 李华
网站建设 2026/7/14 15:41:29

DIY智能无极调速风扇:基于EspHome固件与Home Assistant的完美融合

1. 从普通风扇到智能无极调速的华丽变身 去年夏天我被家里那台老旧风扇折磨得不轻——要么全速运转吵得人心烦,要么完全关闭热得睡不着。直到发现用EspHome和Home Assistant改造风扇的方法,才真正体会到什么叫"科技改变生活"。现在我的风扇能根…

作者头像 李华