Misurare l'accuratezza
Ora metterai in pratica l'API di apprendimento di XGBoost usando le sue funzionalità di cross-validation integrate. Come Sergey ha spiegato nel video precedente, XGBoost ottiene le sue elevate prestazioni ed efficienza grazie a una struttura dati ottimizzata per gli insiemi di dati chiamata DMatrix.
Nell'esercizio precedente, gli insiemi di dati di input sono stati convertiti “al volo” in dati DMatrix, ma quando usi l'oggetto cv di xgboost, devi prima convertire esplicitamente i tuoi dati in una DMatrix. È proprio quello che farai qui prima di eseguire la cross-validation su churn_data.
Questo esercizio fa parte del corso
Extreme Gradient Boosting con XGBoost
Istruzioni dell'esercizio
- Crea una
DMatrixchiamatachurn_dmatrixa partire dachurn_datausandoxgb.DMatrix(). Le feature sono disponibili inXe le etichette iny. - Esegui una cross-validation a 3 fold chiamando
xgb.cv().dtrainè la tuachurn_dmatrix,paramsè il tuo dizionario di parametri,nfoldè il numero di fold di cross-validation (3),num_boost_roundè il numero di alberi che vogliamo costruire (5),metricsè la metrica che vuoi calcolare (sarà"error", che convertiremo in accuratezza).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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]))