使用 XGBoost 進行 Grid search
你已經學會如何用 XGBoost 個別調整參數。現在讓我們更進一步,結合 scikit-learn 的 GridSearch 與 RandomizedSearch,並透過 GridSearchCV 與 RandomizedSearchCV 在內部進行交叉驗證。你將用它們在多個參數上,同步遍歷一組可能的參數值,徹底搜尋出表現最佳的模型。先從 GridSearchCV 開始動手吧!
本練習屬於課程
使用 XGBoost 的極端梯度提升
練習說明
- 建立名稱為
gbm_param_grid的參數網格,其中包含"colsample_bytree"的值列表(0.3、0.7)、"n_estimators"的單一值列表(50),以及 2 個"max_depth"值(2、5)的列表。 - 建立一個名為
gbm的XGBRegressor物件。 - 建立一個名為
grid_mse的GridSearchCV物件,並傳入:將參數網格指定給param_grid、將XGBRegressor指定給estimator、將"neg_mean_squared_error"指定給scoring,以及將4指定給cv。同時指定verbose=1,以便更清楚理解輸出內容。 - 將
GridSearchCV物件擬合至X和y。 - 分別使用
grid_mse的.best_params_與.best_score_屬性,列印最佳參數組合與最低的 RMSE。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create the parameter grid: gbm_param_grid
gbm_param_grid = {
'____': [____, ____],
'____': [____],
'____': [____, ____]
}
# Instantiate the regressor: gbm
gbm = ____
# Perform grid search: grid_mse
grid_mse = ____
# Fit grid_mse to the data
____
# Print the best parameters and lowest RMSE
print("Best parameters found: ", ____)
print("Lowest RMSE found: ", np.sqrt(np.abs(____)))