Я пытаюсь вычислить значения SHAP моих данных в модели RandomForest. Проблема в том, что мои данные представляют собой данные временных рядов, и мне нужно получить среднее значение всех значений SHAP в этих интервалах и нормализовать их. вот мои воспроизводимые данные и код:
import pandas as pd
from pandas.tseries.offsets import MonthBegin, MonthEnd
from sklearn.preprocessing import StandardScaler
import shap
import numpy as np
from sklearn.ensemble import RandomForestRegressor
def adjust_dates_by_month(_dax_df: pd.DataFrame, _all_df: pd.DataFrame, _standardize: bool, _tone_WA_LM_ML_Hedo: int, base_year: int, base_month: int, interval: int):
# Calculate the new base date
base_date = pd.Timestamp(year=base_year, month=base_month, day=1) + pd.DateOffset(months=interval)
# Define the training period start and end dates
train_start = base_date
train_end = train_start + pd.DateOffset(months=2)
# Define the evaluation period
evaluate_start = train_end + MonthBegin(1)
evaluate_end = evaluate_start + pd.DateOffset(months=1) - pd.DateOffset(days=1)
# Define the prediction period
to_be_predicted_start = evaluate_end + MonthBegin(1)
to_be_predicted_end = to_be_predicted_start + pd.DateOffset(years=1) - pd.DateOffset(days=1)
# Assign dates to the dataframe
_all_df['date'] = pd.to_datetime(_all_df[['year', 'month']].assign(day=1))
# Filter rows for the training dataset
train_df = _all_df[(_all_df['date'] >= train_start) & (_all_df['date'] = evaluate_start) & (_all_df['date'] = to_be_predicted_start) & (_all_df['date']
как мне нормализовать данные, чтобы сумма была равна 1?
[/list]
Этот код каким-то образом работает, когда интервал равен 1, но больше 1 тогда не работает
all_shap_values = np.array(shap_values_list)
mean_shap_values = np.mean(all_shap_values, axis=0)
normalized_shap_values = mean_shap_values / np.sum(mean_shap_values)
shap.summary_plot(normalized_shap_values, plot_type='bar', show=False)
bars = plt.gca().get_children()
plt.xlabel('')
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-in-numpy
Имена столбцов в SHAP и среднее значение в numpy ⇐ Python
Программы на Python
-
Anonymous
1728381433
Anonymous
Я пытаюсь вычислить значения SHAP моих данных в модели RandomForest. Проблема в том, что мои данные представляют собой данные временных рядов, и мне нужно получить среднее значение всех значений SHAP в этих интервалах и нормализовать их. вот мои воспроизводимые данные и код:
import pandas as pd
from pandas.tseries.offsets import MonthBegin, MonthEnd
from sklearn.preprocessing import StandardScaler
import shap
import numpy as np
from sklearn.ensemble import RandomForestRegressor
def adjust_dates_by_month(_dax_df: pd.DataFrame, _all_df: pd.DataFrame, _standardize: bool, _tone_WA_LM_ML_Hedo: int, base_year: int, base_month: int, interval: int):
# Calculate the new base date
base_date = pd.Timestamp(year=base_year, month=base_month, day=1) + pd.DateOffset(months=interval)
# Define the training period start and end dates
train_start = base_date
train_end = train_start + pd.DateOffset(months=2)
# Define the evaluation period
evaluate_start = train_end + MonthBegin(1)
evaluate_end = evaluate_start + pd.DateOffset(months=1) - pd.DateOffset(days=1)
# Define the prediction period
to_be_predicted_start = evaluate_end + MonthBegin(1)
to_be_predicted_end = to_be_predicted_start + pd.DateOffset(years=1) - pd.DateOffset(days=1)
# Assign dates to the dataframe
_all_df['date'] = pd.to_datetime(_all_df[['year', 'month']].assign(day=1))
# Filter rows for the training dataset
train_df = _all_df[(_all_df['date'] >= train_start) & (_all_df['date'] = evaluate_start) & (_all_df['date'] = to_be_predicted_start) & (_all_df['date']
как мне нормализовать данные, чтобы сумма была равна 1?
[/list]
Этот код каким-то образом работает, когда интервал равен 1, но больше 1 тогда не работает
all_shap_values = np.array(shap_values_list)
mean_shap_values = np.mean(all_shap_values, axis=0)
normalized_shap_values = mean_shap_values / np.sum(mean_shap_values)
shap.summary_plot(normalized_shap_values, plot_type='bar', show=False)
bars = plt.gca().get_children()
plt.xlabel('')
plt.show()
Подробнее здесь: [url]https://stackoverflow.com/questions/79065397/column-names-in-shap-and-mean-in-numpy[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия