gpt4 book ai didi

python - 使用 KernelExplainer(SHAP 工具)进行 Pipeline 和多类分类

转载 作者:行者123 更新时间:2023-11-30 09:15:40 25 4
gpt4 key购买 nike

我有一个用于 3 类分类问题的 Pipeline 对象。因为我找到的大多数示例都是针对二元分类的,所以我发现很难完全理解如何为每个样本获取正确的绘图。

所以,我有这段代码(pipe_model 是我的 Pipeline 对象,之前安装的,X_trainX_test 是我的训练和测试数据,分别):

import shap
explainer = shap.KernelExplainer(pipe_model.predict_proba, X_train, link="logit")
shap_values = explainer.shap_values(X_test, nsamples="auto")

我想要 X_test 中每个样本的绘图。我知道不知何故 explainer.expected_valueshap_values 对于我正在分类的每个类都会有 3 个部分。因此,例如,如果我想绘制 X_test 前 2 个样本的重要性,我会这样做:

shap.force_plot(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0,:], link="logit")
shap.force_plot(explainer.expected_value[1], shap_values[1][0,:], X_test.iloc[1,:], link="logit")

我对 expected_valueshap_values 中的索引进行了一些研究,并且绘图发生了变化,原因我无法解释。有人可以让我知道如何为每个类的每个样本绘制 force_plot 吗?

最佳答案

经过一番探索后,如果其他人也有同样的问题,我认为这将是执行我所要求的正确方法:

显示影响 0 类分类概率的特征:

shap.force_plot(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0,:], link="logit")
shap.force_plot(explainer.expected_value[0], shap_values[0][1,:], X_test.iloc[1,:], link="logit")

显示驱动第 1 类分类概率的特征:

shap.force_plot(explainer.expected_value[1], shap_values[1][0,:], X_test.iloc[0,:], link="logit")
shap.force_plot(explainer.expected_value[1], shap_values[1][1,:], X_test.iloc[1,:], link="logit")

显示驱动第 2 类分类概率的特征:

shap.force_plot(explainer.expected_value[2], shap_values[2][0,:], X_test.iloc[0,:], link="logit")
shap.force_plot(explainer.expected_value[2], shap_values[2][1,:], X_test.iloc[1,:], link="logit")

如果有人能够仔细检查这一点,那就太好了,但无论如何,我现在认为这是正确的。

关于python - 使用 KernelExplainer(SHAP 工具)进行 Pipeline 和多类分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56563271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com