问题标签 [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.
lstm - 用于 LSTM 的 Shap - 时间步长的特征
当我使用 LSTM 将我的特征(其中 29 个)作为时间步长提供时,我正在寻求有关如何使用 Shap 进行可解释性的指导。
所以我的训练数据集有 shape (samples,29,1)
。
python - 检查特征子集的 SHAP 特征重要性
我正在尝试检查我使用 SHAP 构建的模型的特征重要性。
使用以下方法可以正常工作,但我希望有一个仅包含特征子集的图表。这可能吗?
我尝试在数据集上使用 iloc 定义特征和特征名称的子集,例如features=X_train.iloc[;23:]
,但它不起作用。
tensorflow - “LookupError:梯度注册表没有条目:shap_TensorListStack”使用 DeepExplainer for Keras 模型
将 DeepExplainer 用于 Keras 顺序模型进行多类文本分类时,出现以下错误。请在下面找到详细信息:
##KERAS 版本:2.4.3。
##模型
错误
请帮我解决这个问题。我已经尝试了存储库中提到的问题中提供的所有可能的解决方案,但无法解决此错误。
最好的问候, Meghna Goyal
python - 我可以使用设置为“-1”的单调约束计算 CatBoost 模型拟合的 SHAP 值吗?
我拟合了一个 CatBoostClassifier 模型(在 Python 中),其参数monotone_constraints
设置为一个值等于“-1”的字典。
但是,当我尝试计算 SHAP 值时:
我得到错误:
注意:当我没有设置monotone_constraints
参数时,我以前能够使用上面的代码计算 SHAP 值。
python - 如何从python中的字符索引中找到行号?
我有一个基因数据集,其中行的索引是基因的名称。我还希望找到任何给定基因的行号,以便在基因通过机器学习模型预测后单独查看基因 - 以解释基因的预测。我如何为 shap 图编码目前需要一个行号来提取特定基因。
我的数据如下所示:
例如,如果我想拉出并查看模型预测,Gene3
我会这样做:
做shap_plot(3)
对我来说是个问题,因为我实际上不知道我想要的基因是否在打乱的训练或测试数据的第 3 行。
有没有办法从已知的基因索引中提取行号?或者可能重新编码我的 shap 图,以便它接受我的字符串索引?我有生物学背景,所以任何指导将不胜感激。
python - 如何在 shap 中绘制错误分类的样本?
我有一个基因数据集,得分在 0 到 1 之间导致疾病的可能性(得分为 1 的基因已知会导致疾病,而得分为 0.74 的基因可能会导致疾病)。我正在尝试建立一个机器学习模型来预测回归分类中新基因的疾病评分。
我想查看已知疾病基因但得分较低的基因(例如得分为 1 但我的模型得分低于 0.8 的基因)的 shap 决策图。我正在努力将这些基因组合在一起进行绘图。
我的数据看起来像:
我运行一个带有嵌套交叉验证的 xgboost 回归器,查看 MSE,预测 r2,并绘制观察值与预期值。我可以在观察到的与预期的图中看到,在 Y 中得分为 1 的基因有许多由模型预测的低分,我想了解为什么模型使用 shap 来执行此操作。不幸的是,我无法提供示例数据。
我正在尝试调整为标签分类给出的示例 shap 代码:
我该如何选择y_pred
,所以预测/基因应该是 1,但实际上低于 0.8(或任何低数字)?
编辑:针对给定的答案,我尝试过:
这运行但m
长度为 171(我的 Y_test 数据中的全部行数),然后该图绘制了所有 171 它看起来像 - 我从查看数据知道应该只有一个基因 <= 0.5 和但实际上得分为 1。
python - 将 shap 与 SimpleRNN 顺序模型一起使用时出错
在下面的代码中,我导入了一个保存的稀疏 numpy 矩阵,使用 python 创建,对其进行致密化,将掩码、batchnorm 和密集输出层添加到多对一 SimpleRNN。keras 顺序模型工作正常,但是,我无法使用 shap。这是在 Windows 10 桌面上的 Winpython 3830 在 Jupyter 实验室中运行的。X 矩阵的形状为 (4754, 500, 64):4754 个示例,具有 500 个时间步长和 64 个变量。我创建了一个函数来模拟数据,以便可以测试代码。模拟数据返回相同的错误。
运行最后一行来创建 shap_values 会产生以下错误。
python - 如何正确使用具有多个回归目标的形状决策图和力图?
我有一个 Keras 神经网络,它有 26 个特征和 100 个目标,我想用SHAP python 库来解释。例如,为了绘制力图,我这样做:
在哪里:
exp.expected_values
是一个大小为 100 的列表,其中包含我的每个目标的基本值(这至少是我所理解的)。我假设该索引i
指的是第 i 个目标。shap_values
指每个验证案例中每个目标的所有特征的 Shapley 值。因此,j
从 0 运行到 99(即我的目标的大小)并k
从 0 运行到验证用例的总数。
我感到困惑的是,i
实际上j
可能有所不同,而且我确实得到了一个看起来不错的情节。但是,它们不应该总是相同的索引吗?不应该总是将第 i 个基线目标与第 i 个目标的形状值进行比较吗?我对索引的理解有误吗?