Я как раз LLM обучаю на SHAP) можно проверить как она обучилась ! Вот что она рекомендует:
1.Масштабирование: Если вы хотите избежать масштабирования, удалите вызовы scaler.fit_transform и используйте исходные данные.
2.Фоновые данные: Рассмотрите возможность использования filtered_df_2023 и filtered_df_2024 в качестве фоновых данных для объяснителей.
Параметр data в shap.Explanation: Убедитесь, что вы передаете исходные значения признаков, а не SHAP-значения.
import pandas as pd import shap import matplotlib.pyplot as plt
dataframe = X.copy() dataframe.reset_index('ds', inplace=True) dataframe['ds'] = pd.to_datetime(dataframe['ds'])
filtered_df_1 = dataframe[(dataframe['ds'] >= '2023-01-01') & (dataframe['ds'] <= '2023-07-31')] filtered_df_2023 = filtered_df_1.drop(columns=['ds'], errors='ignore')
filtered_df_2 = dataframe[(dataframe['ds'] >= '2024-01-01') & (dataframe['ds'] <= '2024-07-31')] filtered_df_2024 = filtered_df_2.drop(columns=['ds'], errors='ignore')
explainer_2023 = shap.Explainer(best_model, filtered_df_2023) explainer_2024 = shap.Explainer(best_model, filtered_df_2024)
shap_values_2023 = explainer_2023(filtered_df_2023) shap_values_2023_mean = shap_values_2023.values.mean(axis=0) shap_values_2023_base = shap_values_2023.base_values.mean()
shap_values_2024 = explainer_2024(filtered_df_2024) shap_values_2024_mean = shap_values_2024.values.mean(axis=0) shap_values_2024_base = shap_values_2024.base_values.mean()
feature_names = filtered_df_2024.columns
shap_2023 = shap.Explanation( values=shap_values_2023_mean, base_values=shap_values_2023_base, data=filtered_df_2023.mean().values, # Используем исходные значения признаков feature_names=feature_names )
shap_2024 = shap.Explanation( values=shap_values_2024_mean, base_values=shap_values_2024_base, data=filtered_df_2024.mean().values, # Используем исходные значения признаков feature_names=feature_names )
print('2023') plt.figure(figsize=(10, 6)) shap.waterfall_plot(shap_2023, max_display=20)
plt.figure(figsize=(10, 6)) shap.waterfall_plot(shap_2024, max_display=20)
Ответьте пожалуйста работает ли код, для оценки LLM Удачи Вам в работе)