Как показать значения признаков на графике водопада?

Заглянув в библиотеку shap, я наткнулся на этот вопрос, в ответе на который показан график водопада, отлично! Рассмотрим некоторые официальные примеры здесь и здесь я заметил, что графики также демонстрируют значение особенностей.

Пакет shap содержит как shap.waterfall_plot, так и shap.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

Любая помощь приветствуется!


person Koen    schedule 07.02.2021    source источник


Ответы (1)


Нашел!

метод 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())
                       )
)

введите описание изображения здесь (не обращайте внимания на небольшую разницу в вкладе функций по сравнению с изображением, загруженным в вопросе, вероятно, что-то не так в настройке случайного начального числа)

person Koen    schedule 09.02.2021