Classification
Boosting Algorithms
Import Statement
import xgboost as xgb
Model Name
Status 1
Done
‣
Introduction
‣
Key Differences Between XGBClassifier
and XGBRegressor
‣
Core Features of XGBoost
‣
How XGBoost Works
‣
The Optimized Data Structure in XGBoost: xgb.DMatrix
‣
Complete Parameter
Table for XGBoost
‣
Example 1
‣
Example 2
‣
Guide: num_boost_round
vs n_estimators
‣
Best Practices
‣
Example Comparing Both
‣
Summary
‣
Advanced Features
📌 Understanding the Error
The error message:
pgsql
CopyEdit
AttributeError: 'super' object has no attribute '__sklearn_tags__'
occurs because XGBoost (XGBRegressor) does not fully implement sklearn
's new API requirements, which were introduced in Scikit-Learn 1.7.
🔍 Why is this happening?
- Scikit-Learn 1.7+ introduced a new method
__sklearn_tags__
. XGBRegressor
does not yet define this method in its implementation.- As a result, XGBoost models do not fully comply with
sklearn.base.BaseEstimator
in the latest versions of Scikit-Learn.
✅ Solution: Downgrade Scikit-Learn
Option 1: Use an Earlier Version of Scikit-Learn
Since Scikit-Learn 1.7+ is not fully compatible with XGBoost yet, downgrade it to 1.6.1:
bash
CopyEdit
pip install scikit-learn==1.6.1
Then restart your notebook or script.
✅ Alternative Fixes
Option 2: Use XGBoost’s .fit()
Instead of sklearn
Integration
Instead of XGBRegressor().fit()
, use xgb.train()
with DMatrix
:
python
CopyEdit
import xgboost as xgb
# Convert to DMatrix
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# Define parameters
params = {
"objective": "reg:squarederror",
"eval_metric": "rmse",
"max_depth": 2,
"learning_rate": 0.1,
}
# Train XGBoost model
xgb_model = xgb.train(params, dtrain, num_boost_round=100)
This bypasses Scikit-Learn entirely.
🚀 Best Fix?
✅ For compatibility: Use pip install scikit-learn==1.6.1
✅ For XGBoost-native training: Use xgb.train()
with DMatrix
.
Let me know which approach you prefer! 🚀