Ошибка: параметр DMatrix `enable_categorical` должен быть установлен в значение True

#python-3.x #machine-learning #xgboost

Вопрос:

Я обучил XGB набору данных с int, поплавками и объектами. Теперь я хочу построить значение функции, используя значения Shap. Однако я сталкиваюсь с ошибкой, которая гласит:

 ValueError: DataFrame.dtypes for data must be int, float, bool or category.  When
categorical type is supplied, DMatrix parameter `enable_categorical` must be 
set to `True`
 

Вот мой код:

 from sklearn.pipeline import Pipeline
from xgboost import XGBClassifier
import shap

model = XGBClassifier()
pipeline = Pipeline([
    ("preprocessing", preprocessing_pipeline),
    ("classifier", model)
])

trained_pipeline = pipeline.fit(X_train, y_train)
y_pred_test = trained_pipeline.predict_proba(X_test)[:, 1]
y_pred_train = trained_pipeline.predict_proba(X_train)[:, 1]

#evaluate model on test set
X_eval = X_test.copy()
X_eval.insert(0, 'TARGET', y_test)
X_eval.insert(1, 'PREDICTION', y_pred_test)
X_eval.insert(2, 'ACCURATE', X_eval["TARGET"] == (X_eval["PREDICTION"] > 0.5))
X_eval = X_eval.reset_index()

#plot feature importance using Shap values
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_eval)
 

Комментарии:

1. Я думаю, что в вашем наборе данных есть некоторые категориальные особенности. Вам нужно пометить, закодировать их. Можете ли вы показать нам свой preprocessing_pipeline и model ? И, пожалуйста, поделитесь также 10 первыми строками ваших данных.