开始使用免费开始使用

探索 XGBoost 的过拟合

在用不同的最大深度训练了 3 个 XGBoost 模型后,您现在将评估它们的效果。为此,您需要在训练数据和测试数据上分别衡量每个模型的表现。正如您已经知道的,训练数据是模型训练所用的数据;测试数据是模型从未见过的下个月销售数据。

本练习的目标是判断是否存在过拟合的模型。评估模型表现将使用均方误差(MSE)。它在 sklearn.metrics 中以 mean_squared_error() 函数提供,该函数接收两个参数:真实值和预测值。

traintest 两个 DataFrame,以及已训练好的 3 个模型(xg_depth_2xg_depth_8xg_depth_15)已在您的工作区中可用。

本练习是课程的一部分

用 Python 赢下 Kaggle 竞赛

查看课程

练习说明

  • 在训练数据和测试数据上分别为每个模型生成预测。
  • 计算训练数据和测试数据中真实值与预测值之间的 MSE。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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))
编辑并运行代码