Utforska överanpassning i XGBoost
Nu när du har tränat 3 XGBoost-modeller med olika maximalt djup är det dags att utvärdera deras kvalitet. Du mäter varje modells prestanda på både träningsdata och testdata. Träningsdata är den data som modellerna har tränats på, medan testdata innehåller nästa månads försäljningssiffror som modellerna aldrig har sett tidigare.
Målet med den här övningen är att avgöra om någon av de tränade modellerna är överanpassad. För att mäta modellernas kvalitet använder du Mean Squared Error (MSE). Det finns tillgängligt i sklearn.metrics som funktionen mean_squared_error(), som tar två argument: faktiska värden och predikterade värden.
DataFrame-objekten train och test samt de 3 tränade modellerna (xg_depth_2, xg_depth_8, xg_depth_15) finns tillgängliga i din arbetsyta.
Den här övningen är en del av kursen
Vinna en Kaggle-tävling i Python
Övningsinstruktioner
- Gör prediktioner med varje modell på både tränings- och testdata.
- Beräkna MSE mellan de faktiska värdena och dina prediktioner för både tränings- och testdata.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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))