Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak een DMatrix met de naam churn_dmatrix van churn_data met xgb.DMatrix(). De features staan in X en de labels in y.
  • Voer 3-voudige kruisvalidatie uit door xgb.cv() aan te roepen. dtrain is je churn_dmatrix, params is je parameterdictionary, nfold is het aantal kruisvalidatie-folds (3), num_boost_round is het aantal trees dat we willen bouwen (5), metrics is 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]))
Code bewerken en uitvoeren