IniziaInizia gratis

Esplora l'overfitting con XGBoost

Dopo aver addestrato 3 modelli XGBoost con diverse profondità massime, ora ne valuterai la qualità. A questo scopo, misurerai le prestazioni di ciascun modello sia sui dati di train sia sui dati di test. Come ormai sai, i dati di train sono quelli su cui i modelli sono stati addestrati. I dati di test sono le vendite del mese successivo, che i modelli non hanno mai visto.

L’obiettivo di questo esercizio è capire se uno dei modelli addestrati sta facendo overfitting. Per misurare la qualità dei modelli userai la Mean Squared Error (MSE). È disponibile in sklearn.metrics come funzione mean_squared_error() che accetta due argomenti: i valori veri e i valori predetti.

I DataFrame train e test, insieme ai 3 modelli addestrati (xg_depth_2, xg_depth_8, xg_depth_15), sono disponibili nel tuo workspace.

Questo esercizio fa parte del corso

Vincere una competizione Kaggle con Python

Visualizza il corso

Istruzioni dell'esercizio

  • Fai le predizioni per ciascun modello sia sui dati di train sia su quelli di test.
  • Calcola la MSE tra i valori reali e le tue predizioni sia per i dati di train sia per quelli di test.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

from sklearn.metrics import mean_squared_error

dtrain = xgb.DMatrix(data=train[['store', 'item']])
dtest = xgb.DMatrix(data=test[['store', 'item']])

# For each of 3 trained models
for model in [xg_depth_2, xg_depth_8, xg_depth_15]:
    # Make predictions
    train_pred = model.____(dtrain)     
    test_pred = model.____(dtest)          
    
    # Calculate metrics
    mse_train = ____(train['sales'], train_pred)                  
    mse_test = ____(test['sales'], test_pred)
    print('MSE Train: {:.3f}. MSE Test: {:.3f}'.format(mse_train, mse_test))
Modifica ed esegui il codice