如何在 shap 瀑布图中显示特征值?

How to show feature values in shap waterfall plot?

查看 shap 库,我遇到了 this question, in which the answer showcased the waterfall plot, neat! Looking at some of the official examples here and here 我注意到这些图也展示了特征的价值。

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 方法的任何其他参数

非常感谢任何帮助!

找到了!

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())
                       )
)

(不要介意与问题中上传的图像相比,特征的贡献略有不同,设置随机种子可能有问题)