es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

xgboost: TypeError: predict() recibió un argumento inesperado llamado “pred_contribs”

Entrené un modelo utilizando xgboost v0.90 para que fuera compatible con el motor de ML de AWS SageMaker. Estoy realizando la codificación habitual y la sintonización de hiperparámetros. Algunos fragmentos de código a continuación:

import pandas as pd
import pickle
from xgboost import XGBRegressor
from sklearn.model_selection import train_test_split, GridSearchCV, RandomizedSearchCV
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

# Dividir df en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,0:21], df.iloc[:,-1], test_size=0.1)

X_train.shape
(1000, 21)

# Codificar variables categóricas
cat_vars = ['cat1','cat2','cat3']
cat_transform = ColumnTransformer([('cat', OneHotEncoder(handle_unknown='ignore'), cat_vars)], remainder='passthrough')

encoder = cat_transform.fit(X_train)
X_train = encoder.transform(X_train)
X_test = encoder.transform(X_test)

X_train.shape
(1000, 420)

# Definir un modelo de regresión xgboost
model = XGBRegressor()

# Realizar la sintonización de hiperparámetros
.....

# Ajustar el modelo
model.fit(X_train, y_train)

# Predecir en datos de prueba
y_pred = model.predict(X_test, pred_contribs=True)
y_pred

He instalado SHAP y según la documentación [1], el método .predict() acepta el argumento pred_contribs. Traceback:

    TypeError                                 Traceback (most recent call last)
<ipython-input-1119-37e607e853fd> in <module>
      1 # Predecir en datos de prueba
----> 2 y_pred = model.predict(X_test, pred_contribs=True)
      3 y_pred

TypeError: predict() got an unexpected keyword argument 'pred_contribs'

[1]https://shap.readthedocs.io/en/latest/example_notebooks/tabular_examples/tree_based_models/Python%20Version%20of%20Tree%20SHAP.html?highlight=pred_contribs

[2]https://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.Booster.predict

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el argumento pred_contribs no es compatible con la versión de XGBoost que estás utilizando (v0.90). Según la documentación de la API de Python de XGBoost [2], a partir de la versión 1.0.0, el método predict() de la clase Booster admite el argumento pred_contribs. Por lo tanto, es posible que necesites actualizar tu versión de XGBoost a al menos 1.0.0 para usar el argumento pred_contribs con predict().

Comments are closed.