XGBoosting Home | About | Contact | Examples

XGBoost xgboost.train() vs XGBClassifier

XGBoost is a powerful and efficient library for gradient boosting, offering two main approaches to train models: xgboost.train and XGBClassifier.

While both methods can be used to train XGBoost models, they differ in their API design and level of control. This example demonstrates the key differences between these two approaches and provides code examples for each.

Let’s start by training an XGBoost model using xgboost.train:

import xgboost as xgb
from sklearn.metrics import accuracy_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=1000, n_classes=2, n_features=10, n_informative=5, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Define parameters for xgboost.train
params = {
    'objective': 'binary:logistic',
    'max_depth': 3,
    'learning_rate': 0.1,
    'random_state': 42
}

# Create DMatrix objects for train and test data
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# Train the model using xgboost.train
model = xgb.train(params, dtrain, num_boost_round=100)

# Make predictions and evaluate model performance
y_pred = model.predict(dtest)
y_pred = (y_pred > 0.5).astype(int)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy (xgboost.train): {accuracy:.2f}")

In this approach, we define the model parameters in a dictionary and create DMatrix objects for the train and test data.

We then use xgboost.train to train the model, specifying the parameters, training data, and number of boosting rounds.

Now, let’s train the same model using XGBClassifier:

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=1000, n_classes=2, n_features=10, n_informative=5, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Define parameters for XGBClassifier
params = {
    'max_depth': 3,
    'learning_rate': 0.1,
    'n_estimators': 100,
    'random_state': 42
}

# Instantiate XGBClassifier with parameters
model = XGBClassifier(**params)

# Train the model using fit() method
model.fit(X_train, y_train)

# Make predictions and evaluate model performance
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy (XGBClassifier): {accuracy:.2f}")

With XGBClassifier, we define the model parameters directly in the constructor. We then instantiate the classifier with these parameters and train the model using the fit() method, which takes the training data as numpy arrays or pandas DataFrames.

The key differences between xgboost.train and XGBClassifier are:

When deciding which approach to use, consider your specific needs:

By understanding the differences between xgboost.train and XGBClassifier, you can choose the most suitable approach for your XGBoost model training tasks.



See Also