Measuring accuracy
You'll now practice using XGBoost's learning API through its baked in cross-validation capabilities. As Sergey discussed in the previous video, XGBoost gets its lauded performance and efficiency gains by utilizing its own optimized data structure for datasets called a DMatrix
.
In the previous exercise, the input datasets were converted into DMatrix
data on the fly, but when you use the xgboost
cv
object, you have to first explicitly convert your data into a DMatrix
. So, that's what you will do here before running cross-validation on churn_data
.
This exercise is part of the course
Extreme Gradient Boosting with XGBoost
Exercise instructions
- Create a
DMatrix
calledchurn_dmatrix
fromchurn_data
usingxgb.DMatrix()
. The features are available inX
and the labels iny
. - Perform 3-fold cross-validation by calling
xgb.cv()
.dtrain
is yourchurn_dmatrix
,params
is your parameter dictionary,nfold
is the number of cross-validation folds (3
),num_boost_round
is the number of trees we want to build (5
),metrics
is the metric you want to compute (this will be"error"
, which we will convert to an accuracy).
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the DMatrix from X and y: churn_dmatrix
churn_dmatrix = ____(data=____, label=____)
# Create the parameter dictionary: params
params = {"objective":"reg:logistic", "max_depth":3}
# Perform cross-validation: cv_results
cv_results = ____(dtrain=____, params=____,
nfold=____, num_boost_round=____,
metrics="____", as_pandas=____, seed=123)
# Print cv_results
print(cv_results)
# Print the accuracy
print(((1-cv_results["test-error-mean"]).iloc[-1]))