XGBoost: fit/predict
Tijd om je eerste XGBoost-model te maken! Zoals Sergey in de video liet zien, kun je het scikit-learn-paradigma .fit() / .predict() gebruiken dat je al kent om je XGBoost-modellen te bouwen, omdat de xgboost-bibliotheek een scikit-learn-compatibele API heeft!
Hier werk je met churn-data. Deze gegevensset bevat denkbeeldige data van een ritdeel-app met gebruikersgedrag tijdens hun eerste maand app-gebruik in een set denkbeeldige steden, plus of ze de dienst 5 maanden na aanmelding nog gebruikten. De gegevens zijn al voor je ingeladen in een DataFrame met de naam churn_data – verken het in de Shell!
Je doel is om op basis van de data van de eerste maand te voorspellen of gebruikers 5 maanden later nog steeds van de dienst gebruikmaken. Dit is een typische opzet voor een churn-predictieprobleem. Hiervoor splits je de data in trainings- en testsets, train je een klein xgboost-model op de trainingsset en evalueer je de prestaties op de testset door de nauwkeurigheid te berekenen.
pandas en numpy zijn geïmporteerd als pd en np, en train_test_split is geïmporteerd uit sklearn.model_selection. Daarnaast zijn de arrays voor de features en de target aangemaakt als X en y.
Deze oefening maakt deel uit van de cursus
Extreme Gradient Boosting met XGBoost
Oefeninstructies
- Importeer
xgboostalsxgb. - Maak trainings- en testsets waarbij 20% van de data wordt gebruikt voor testen. Gebruik een
random_statevan123. - Instantieer een
XGBoostClassifieralsxg_clmetxgb.XGBClassifier(). Specificeern_estimatorsals10trees en eenobjectivevan'binary:logistic'. Maak je nog geen zorgen over wat dit precies betekent; later in de cursus leer je meer over deze parameters. - Train
xg_clop de trainingsset (X_train, y_train)met de methode.fit(). - Voorspel de labels van de testset (
X_test) met de methode.predict()en klik op 'Antwoord verzenden' om de nauwkeurigheid te printen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Import xgboost
____
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)
# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)
# Fit the classifier to the training set
____
# Predict the labels of the test set: preds
preds = ____
# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))