1

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

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

for which_class in y.unique():
display(
    shap.waterfall_plot(shap.Explanation(values=shap_values[int(which_class)][idx], 
                                         base_values=explainer.expected_value[int(which_class)], 
                                         feature_names=X_test.columns.tolist())
                       )
)

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

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

任何帮助是极大的赞赏!

4

1 回答 1

0

找到了!

shap.Explanation方法有一个参数,您可以在其中传递数据。请参阅下面的编辑示例

for which_class in y.unique():
display(
    shap.waterfall_plot(shap.Explanation(values=shap_values[int(which_class)][row], 
                                         base_values=explainer.expected_value[int(which_class)], 
                                         data=X_test.iloc[row],  # added this line
                                         feature_names=X_test.columns.tolist())
                       )
)

在此处输入图像描述 (不要介意功能的贡献与问题中上传的图像相比略有不同,设置随机种子可能有问题)

于 2021-02-09T07:57:13.813 回答