Nauwkeurigheid meten
Je gaat nu oefenen met de learning-API van XGBoost via de ingebouwde kruisvalidatiefuncties. Zoals Sergey in de vorige video besprak, haalt XGBoost zijn geroemde performance en efficiëntiewinst uit het gebruik van een eigen geoptimaliseerde datastructuur voor gegevenssets, een DMatrix.
In de vorige oefening werden de invoergegevenssets on-the-fly omgezet naar DMatrix-gegevens, maar als je het cv-object van xgboost gebruikt, moet je je data eerst expliciet omzetten naar een DMatrix. Dat ga je hier doen voordat je kruisvalidatie op churn_data uitvoert.
Deze oefening maakt deel uit van de cursus
Extreme Gradient Boosting met XGBoost
Oefeninstructies
- Maak een
DMatrixmet de naamchurn_dmatrixvanchurn_datametxgb.DMatrix(). De features staan inXen de labels iny. - Voer 3-voudige kruisvalidatie uit door
xgb.cv()aan te roepen.dtrainis jechurn_dmatrix,paramsis je parameterdictionary,nfoldis het aantal kruisvalidatie-folds (3),num_boost_roundis het aantal trees dat we willen bouwen (5),metricsis de metriek die je wilt berekenen (dit is"error", die we omzetten naar een nauwkeurigheid).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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]))