Перед одного высоким кодированием входные данные состоит из 2 категориальных столбцов (Category1, Category2). Категория1 входит в число A, B, C и Category2, среди X, y. После горячего кодирования входные данные преобразуются в 5 столбцов (A, B, C, X, Y). Функция соответствия работает хорошо. Я хочу сформировать график показать около 2 входных столбцов (Category1, Category2), но на самом деле график Shap показывает 5 столбцов (A, B, C, X, Y) (изображение ниже). < /P>
Как это сделать? Вот рабочий код. Я предполагаю, что у меня будет еще несколько параметров для TreeExplainer для определения категориальных столбцов, чтобы стоимость перестановки снизилась, но я понятия не имею. < /P>
import pandas as pd
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
from sklearn.compose import ColumnTransformer
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
import shap
# example data (2 input columns, 1 output)
data = {
'category1': ['A', 'B', 'C', 'A', 'B'],
'category2': ['X', 'Y', 'X', 'Y', 'X'],
'target': [0, 1, 0, 1, 0]
}
df = pd.DataFrame(data)
# category columns
categorical_features = ['category1', 'category2']
# OneHotEncoder
transformer = ColumnTransformer(
transformers=[
('encoder', OneHotEncoder(sparse_output=False), categorical_features)
],
remainder='passthrough'
)
# data preparation
X = df.drop('target', axis=1)
y = df['target']
# encoding
# after encoding, (2+3 columns and 1 output)
X_encoded = transformer.fit_transform(X)
# split data
X_train, X_test, y_train, y_test = train_test_split(
X_encoded, y, test_size=0.2, random_state=42
)
# train model
model = XGBClassifier()
model.fit(X_train, y_train)
#-------------------
# Explain the model's predictions using SHAP
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
# Visualize SHAP values with feature names
feature_names = transformer.get_feature_names_out(categorical_features)
shap.summary_plot(shap_values, X_test, feature_names=feature_names)
Подробнее здесь: https://stackoverflow.com/questions/794 ... al-columns
Блок -график с категориальными колоннами ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как обработать набор данных с категориальными и числовыми данными для модели LSTM?
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-