问题标签 [shap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2302 浏览

python - shap 中的错误 - AttributeError:模块“shap”没有属性“TreeExplainer”

当我使用时:

我收到此错误:

完整代码:

梯度提升分类器模型为:

0 投票
0 回答
901 浏览

python - SHAP 将图形保存为空白/白色,但 Matplotlib 可以很好地保存图形

我正在尝试在训练随机森林后绘制 SHAP 总结图。我使用 VSCode 连接到远程工作人员并在那里运行我的代码。当我运行我的代码来生成和保存图像时,它不会抛出任何错误,而只会生成一个白盒/空白图。此代码在下方(顶部)。不同寻常的是,当我在 SHAP 之外测试使用 Matplotlib 生成和保存图形时,但在这个 ssh 隧道上,它工作得非常好(底部)。

我正在使用 matplotlib 版本 = 1.5.1 和 SHAP 版本 = 0.34.0。值得注意的是我尝试调试它和我的设置的一些事情:(1)这个确切的代码在我不再有权访问的以前的工作人员上工作。对我来说,这表明这是环境配置的问题;(2) 我尝试使用plt.gcf()将 SHAP 图转换为纯 matplotlib 对象并保存它,但这也不起作用;(3)我尝试plt.close()在新的之前关闭情节()plt.figure(),但这也没有奏效;(4) 我已经尝试了我当前的代码,无论是否有matplotlib=True标志;(5) 我正在尝试生成许多 SHAP 图形(未显示),这些也产生了空白/白色图;(6) 我使用的是 Mac,远程工作人员是 Linux (Ubuntu)。

任何见解将不胜感激。谢谢。

当前代码——返回白框/空白图

SHAP 之外的 MATPLOTLIB -- 保存一个正常的绘图

0 投票
2 回答
1571 浏览

python - 如何获取每个特征的 SHAP 值?

我目前正在使用 SHAP 库,我已经使用每个功能的平均贡献生成了我的图表,但是我想知道图表上绘制的确切值

在此处输入图像描述

如何获得图表中描绘的确切值?

0 投票
0 回答
209 浏览

python - 使用带有 RepeatDataset 和 BatchDataset 类型对象的 SHAP 解释使用 BERT 构建的模型

我使用预训练的 BERT 权重构建了一个有点复杂的模型。模型结构如下:

我使用了 RepeatDataset 类型的对象将数据提供给模型。它是使用以下代码创建的:

所以类型是:tensorflow.python.data.ops.dataset_ops.RepeatDataset. 现在我想使用SHAP添加模型解释。

我已经尝试使用DeepExplainer. 它试图获取数据的形状,在我的例子中是train_ds. 但作为一种RepeateDataset对象,它没有形状属性。我怎样才能克服模型?或者有没有其他方法可以将 SHAP 与RepeatDataset类型对象一起使用?

0 投票
1 回答
766 浏览

python - 由于 Tensorflow 错误(张量不可散列),无法使用 SHAP GradientExplainer

我已经被这个错误困扰了很长时间,有没有办法在不降级我的 tensorflow 版本的情况下解决它?到目前为止,我发现的所有解决方案都推荐使用 TF<2.0,我不想这样做。当前 TF 版本 = 2.4.1,Keras 版本 = 2.4.3,使用 google colab

我正在尝试将 SHAP GradientExplainer 与 VGG 16 模型一起使用,以查看特定层如何影响预测。

代码是:

错误是:

0 投票
0 回答
107 浏览

scikit-learn - 单变量 IsolationForest 的 Shap TreeExplainer 的 IndexError

帮助!尝试解释 IsolationForest 时出现 IndexError。

我正在使用Scikit-learn'sIsolationForest进行异常检测。通常,我使用的数据集有多个变量——但有时它们只有一个。这适用于拟合和预测模型。但是,为了使用shap's解释模型的输出TreeExplainer,我得到一个IndexError.

请参阅下面的最小可重现示例:

问题的根本原因似乎如下(见下面的代码):每个IsolationForest都有多个隔离树。在 中TreeExplainer,多个IsoTree对象被初始化。在初始化期间,该行崩溃,因为self.features,一个列表,包含 -2,这是超出范围的,因为tree_features它只是一个数组 ( [0])。所以也许问题是在拟合 时IsolationForest,给出了错误的值self.features

知道如何解决这个问题吗?

当然,对于单变量模型,使用 Shapley 值是没有意义的,因为您可以只使用score_samples. 我打算将其用作解决方法,但肯定有一种更优雅的方式不需要这样做?

谢谢和最良好的祝愿,

亚历山大

0 投票
1 回答
1113 浏览

python - 如何理解二元分类问题的 Shapley 值?

我对 shapley python 包很陌生。我想知道我应该如何解释二进制分类问题的 shapley 值?这是我到目前为止所做的。首先,我使用 lightGBM 模型来拟合我的数据。就像是

因为这是一个二分类问题。shap_values 包含两个部分。我假设一个用于 0 类,另一个用于 1 类。如果我想知道一个功能的贡献。我必须绘制两个如下图。

对于 0 级

在此处输入图像描述

1级 在此处输入图像描述

但是我应该如何获得更好的可视化?结果无法帮助我理解“cold_days 是否增加了输出成为 1 类或成为 0 类的概率?”

使用相同的数据集,如果我使用 ANN,则输出是这样的。我认为 shapley 结果清楚地告诉我,“cold_days”将积极增加结果成为第 1 类的概率。 在此处输入图像描述

我感觉 LightGBM 输出有问题,但我不确定如何修复它。如何获得类似于 ANN 模型的更清晰的可视化?

#编辑

我怀疑我以某种方式错误地使用了 lightGBM 来得到奇怪的结果。这是原始代码

0 投票
0 回答
372 浏览

python - SHAP:如何获得分类变量的特征重要性?

我正在尝试将 SHAP 用于 ANN 模型解释。我发现当我使用

对于 dummy 之后的分类变量,特征重要性类似于

我想知道有什么方法可以直接获得特征重要性CategoricalFeature吗?

0 投票
1 回答
3055 浏览

python - 如何在形状瀑布图中显示特征值?

查看 shap 库,我遇到了这个问题,其中答案展示了瀑布图,整洁!看看这里这里的一些官方示例,我注意到这些图也展示了这些功能的价值。

shap 包同时包含shap.waterfall_plotshap.plots.waterfall,在 Iris 数据集上训练的随机森林上尝试两者都给出了相同的结果(请参见下面的一个代码和图像示例)

其中idx表示我试图解释的测试集中的一个样本。该代码为其中一个类生成以下图: 在此处输入图像描述

如何让绘图也显示特征值?我没有看到可以传递给 plot 方法的任何其他参数

任何帮助是极大的赞赏!

0 投票
1 回答
348 浏览

python - 如何对已应用 PCA 的数据集使用 shap_value 解释器

这是我的代码。它运行完美,但返回带有“功能 1”和“功能 2”的摘要图。这完全有道理,因为我给了它一个仅包含 2 列的数据集。但是我的问题是,我怎样才能让它根据原始数据解释我的决策树的决策?

我已经尝试过此代码,并且它没有错误地工作,但我不确定我是否正确使用它。(不同的是我在分类器和 shap 中都将 df_2d 更改为原始 df)

感谢您的时间和帮助!