Как сохранить выравнивание функций при передаче пользовательской оболочки модели в SHAP KernelExplainer?Python

Программы на Python
Ответить
Anonymous
 Как сохранить выравнивание функций при передаче пользовательской оболочки модели в SHAP KernelExplainer?

Сообщение Anonymous »

Я работаю над проектом «Объяснимый искусственный интеллект» (XAI), в котором сравниваю различные модели-независимые платформы (SHAP, LIME, DALEX). Я использую специальную оболочку для стандартизации вывода моей модели (аналогично конвейеру Scikit-Learn), чтобы обеспечить совместимость между этими библиотеками.
Однако, когда я передаю обернутую модель в shap.KernelExplainer, я сталкиваюсь с несоответствием имени функции на сводных графиках. Несмотря на то, что входной DataFrame имеет именованные столбцы, значения SHAP, похоже, теряют связь с именами объектов после прохождения через оболочку прогнозирования.
import shap
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Load a sample dataset
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestClassifier().fit(X_train, y_train)

# My Custom Wrapper (Simplified version of my project's Hermai-based wrapper)
def model_predict(data):
# Standardizing output to return probabilities
return model.predict_proba(data)

# SHAP Initialization
explainer = shap.KernelExplainer(model_predict, shap.sample(X_train, 10))
shap_values = explainer.shap_values(X_test.iloc[:5, :])

# The issue: Summary plot shows "Feature 1, Feature 2..." instead of actual names
shap.summary_plot(shap_values[1], X_test.iloc[:5, :])


Подробнее здесь: https://stackoverflow.com/questions/799 ... to-shap-ke
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»