问题标签 [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 回答
6557 浏览

python - Python 中的 SHAP 在使用 DeepExplainer 时是否支持 Keras 或 TensorFlow 模型?

我目前正在使用 SHAP 包来确定功能贡献。我已经将这种方法用于 XGBoost 和 RandomForest,并且效果非常好。由于我正在处理的数据是顺序数据,我尝试使用 LSTM 和 CNN 来训练模型,然后使用 SHAP 获得特征重要性DeepExplainer;但它不断抛出错误。我得到的错误是:

我也附上了示例代码(LSTM)。如果有人可以帮助我,那将会很有帮助。

0 投票
1 回答
496 浏览

python-3.x - 将 Tensorflow 2.0 降级到 1.5 后,结果发生了变化,结果再现不可用

你能帮我在不重新启动 Python 内核的情况下使用 Tensorflow 1.15 实现可重现的结果吗?为什么 TF 2.0 和 TF 1.5 的输出结果在参数和数据集完全相同的情况下是不同的?是否有可能实现相同的输出?

更多细节:我试图通过以下方式解释 TF 2.0 中的模型结果:

我收到一个错误:

根据SO topic,我尝试通过在我的代码前面使用来设置 TF 2.0 与 TF 1 的兼容性:

但是错误又出现了。根据许多用户的建议,我将 TF2 降级到 TF 1.15 它解决了问题,并且 shap 模块解释了结果,但是:1)为了使结果可重现,现在我必须更改 tf.random.set_random_seed 上的 tf.random.set_seed(7) (7)并且每次都重启Python内核!在 TF2 中,我不必重新启动内核。2)预测结果发生了变化,尤其是经济效率(即TF1.5.错误分类比TF2.0更重要的样本)。

TF 2:精度:94.95%,经济效率=64%

TF 1:精度:94.85%,经济效率=56%

模型的代码在这里

0 投票
0 回答
924 浏览

python - 如何在 SHAP 库中使用 GradientExplainer (Tensorflow 2.0)

你会提示我,shap.GradientExplainer()在 SHAP 库中放入什么参数(使用 Tensorflow 2.0)。

互联网上只有一个与图像分类相关的例子。在示例中,该函数接受 2 个输入作为第一个参数:

完整的代码片段:

但我的模型是顺序的,请参见此处。当我尝试将 2 个输入作为第一个参数时

, 发生错误

当我使用 1 个输入时

,出现另一个错误:

然后,我尝试从数据集中输入数据:

发生错误:

如果您没有答案,您可能知道另一个使用 GradientExplainer 的示例。

0 投票
1 回答
351 浏览

python - 如何在 SHAP Values ForcePlot 的位置插入函数的名称?

我正在使用机器学习 SHAP 值库来解释 ML 模型,当我执行 ForcePlot 时,它不是返回特征的名称,而是返回该特征的相应值。

有我应该更改的参数吗?(当我使用它时,它完美地绘制了功能的名称)

在此处输入图像描述

0 投票
3 回答
2052 浏览

python - 如何在 SHAP 汇总图上绘制特定特征?

我目前正在尝试在 SHAP 汇总图上绘制一组特定功能。但是,我正在努力寻找这样做所需的代码。

查看 Github 上的源代码时,summary_plot 函数似乎确实具有“特征”属性。但是,这似乎不能解决我的问题。

任何人都可以帮我绘制一组特定的功能,或者这在当前的 SHAP 代码中不是一个可行的选项。

0 投票
0 回答
2144 浏览

python - Keras LSTM:使用 SHAP 的特征重要性条形图

我正在研究用于时间序列预测的 LSTM。现在我想了解,哪些功能对输出的影响最大,哪些不重要。目标是像在 pycharm 中使用 matplotlib 的条形图(参考:https ://github.com/slundberg/shap ): 在此处输入图像描述

这是我的模型:

在计算 shap_values (shap_values = ...) 时出现以下错误:

有任何想法吗?提前致谢!

0 投票
4 回答
1786 浏览

python - 使用 SHAP 的 Tkinter 回调异常

我正在尝试在 Python 中绘制一些SHAP 图,以更深入地了解我的机器学习模型的输出。这是我在 for 循环中调用的方法:

绘图按预期保存到磁盘,但在每次调用 savefig 方法后,我收到以下错误消息:

任何想法如何摆脱这个异常?

0 投票
1 回答
1284 浏览

keras - ValueError:两个形状中的维度 1 必须相等,但分别为 10 和 1

我试图在 MNIST 数据集的帮助下实现 shap DeepExplainer (DeepSHAP) 模块。但我收到以下错误:

ValueError:两个形状中的维度 1 必须相等,但为 10 和 1。形状为 [?,10] 和 [?,1]。对于 gradients_7/dense_2_1/Softmax_grad/gradients/gradients_7/dense_2_1/Softmax_grad/truediv_grad/Select_1 (op: 'Select') 输入形状:[?,1], [?,10], [?,10]。

错误在该行中: shap_values = e.shap_values(x_test[1:5])

完整代码:

0 投票
1 回答
960 浏览

python - 带有 Shap ValueError 的 DeepExplainer:使用不是符号张量的输入调用了 Layersequential_1

我尝试使用带有 Shap 库的 Keras 获取经典神经网络的特征重要性,但出现以下错误: ValueError: Layersequential_1 was called with an input that is not a symbolic tensor。我查看了论坛,但答案仅适用于卷积网络。请在下面找到我的代码。

我的 X 是具有以下形状的数据框:

我的标签是具有以下形状的数据框:

我的模型如下:

当我尝试获取功能重要性时,我遇到了 DeepExplainer 的问题:

有人有想法吗?在此先感谢您的帮助。

0 投票
2 回答
603 浏览

shap - 获取使用 kNN 进行的预测的 SHAP 值

如果我想获得带有 n 个变量的 kNN 分类器的核 SHAP 值,我是否必须重新计算预测 2^n 次?

(我用的不是python,而是MATLAB,所以需要知道里面的算法)