← На главную Воспоминания

Суббота, 3 Февраля 2024

Прошел машинг лернинг эксплейнабилити

Calculate and show permutation importance:

Чтобы посчитать какая фича наиболее важная для предсказания. Считает так: берет колонку и перемешивает значения в колонке, и смотрит как меняется предсказания

import eli5
from eli5.sklearn import PermutationImportance

perm = PermutationImportance(my_model, random_state=1).fit(val_X, val_y)
eli5.show_weights(perm, feature_names = val_X.columns.tolist())

Calculate and show partial dependence plot:

Чтобы посчитать как какая то фича влият на предсказания, вниз они идут или вверх. Считатет так: Берет значение из колонки и добавляет небольшое значение и делает предсказание

from matplotlib import pyplot as plt
from sklearn.inspection import PartialDependenceDisplay

feature_name = 'Goal Scored'
PartialDependenceDisplay.from_estimator(my_model, val_X, [feature_name])
plt.show()

2D dependance plot

fig, ax = plt.subplots(figsize=(8, 6))
f_names = [('Goal Scored', 'Distance Covered (Kms)')]
# Similar to previous PDP plot except we use tuple of features instead of single feature
disp4 = PartialDependenceDisplay.from_estimator(tree_model, val_X, f_names, ax=ax)
plt.show()

Calculate and show Shap Values for One Prediction:

Чтобы посмотреть на одно предсказание и изнать для него какие фичи сыграли какую роль в этом предсказании

import shap  # package used to calculate Shap values

data_for_prediction = val_X.iloc[0,:]  # use 1 row of data here. Could use multiple rows if desired

# Create object that can calculate shap values
explainer = shap.TreeExplainer(my_model)
shap_values = explainer.shap_values(data_for_prediction)
shap.initjs()
shap.force_plot(explainer.expected_value[0], shap_values[0], data_for_prediction)

shap summary plot

import shap  
explainer = shap.TreeExplainer(my_model)
shap_values = explainer.shap_values(val_X)

shap.summary_plot(shap_values[1], val_X)

shap contribution plot

import shap  
explainer = shap.TreeExplainer(my_model)
shap_values = explainer.shap_values(X)
shap.dependence_plot('Ball Possession %', shap_values[1], X, interaction_index="Goal Scored")