pythonintermediate

XGBoost with Early Stopping and SHAP

Train an XGBoost model with early stopping and explain predictions using native SHAP integration.

python
import xgboost as xgb
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size=0.1)

dtrain = xgb.DMatrix(X_tr, label=y_tr)
dval   = xgb.DMatrix(X_val, label=y_val)
dtest  = xgb.DMatrix(X_test)

params = {'objective':'binary:logistic', 'max_depth': 5, 'eta': 0.1, 'eval_metric': 'auc'}
model  = xgb.train(params, dtrain, num_boost_round=500, evals=[(dval,'val')], early_stopping_rounds=20, verbose_eval=50)

# SHAP values
shap_values = model.predict(dtest, pred_contribs=True)
print('Feature importance via SHAP:', np.abs(shap_values[:,:-1]).mean(axis=0).argsort()[::-1][:5])

Use Cases

  • classification
  • SHAP explanations
  • early stopping

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.