XGBoosting Home | About | Contact | Examples

Configure XGBoost "seed" Parameter

The seed parameter in XGBoost is used to control the randomness of the model, allowing for reproducibility of results across multiple runs.

However, it is important to note that the seed parameter has been deprecated in 2017 in favor of the random_state parameter.

By setting the seed (or random_state) parameter to a fixed value, you can ensure that your XGBoost model produces consistent results each time it is trained on the same data.

This is particularly important when comparing different models or hyperparameter configurations, collaborating with others on the same project, or deploying models to production.

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

# Generate synthetic data
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=3, random_state=42)

# Split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialize the XGBoost classifier with a seed value
model = XGBClassifier(seed=42, eval_metric='logloss')

# Fit the model
model.fit(X_train, y_train)

# Make predictions
predictions = model.predict(X_test)

The actual value you choose for the seed (or random_state) does not matter as long as it remains constant across runs.

It is common practice to use an arbitrarily chosen fixed value, such as 42, for the sake of reproducibility. Keep in mind that different seed values will result in slightly different models due to the randomness involved in the training process.

To avoid biasing your results, consider using a different seed value for each model or experiment. Always document the seed value used in your experiments for future reference and reproducibility.

See Also