【发布时间】:2017-10-07 13:20:56
【问题描述】:
我对 sci-kit learn 还很陌生,并且一直在尝试对 XGBoost 进行超参数调整。我的目标是使用提前停止和网格搜索来调整模型参数,并使用提前停止来控制树的数量并避免过度拟合。
由于我对网格搜索使用交叉验证,我希望在早期停止条件中也使用交叉验证。到目前为止,我的代码如下所示:
import numpy as np
import pandas as pd
from sklearn import model_selection
import xgboost as xgb
#Import training and test data
train = pd.read_csv("train.csv").fillna(value=-999.0)
test = pd.read_csv("test.csv").fillna(value=-999.0)
# Encode variables
y_train = train.price_doc
x_train = train.drop(["id", "timestamp", "price_doc"], axis=1)
# XGBoost - sklearn method
gbm = xgb.XGBRegressor()
xgb_params = {
'learning_rate': [0.01, 0.1],
'n_estimators': [2000],
'max_depth': [3, 5, 7, 9],
'gamma': [0, 1],
'subsample': [0.7, 1],
'colsample_bytree': [0.7, 1]
}
fit_params = {
'early_stopping_rounds': 30,
'eval_metric': 'mae',
'eval_set': [[x_train,y_train]]
}
grid = model_selection.GridSearchCV(gbm, xgb_params, cv=5,
fit_params=fit_params)
grid.fit(x_train,y_train)
我遇到的问题是“eval_set”参数。我知道这需要预测变量和响应变量,但我不确定如何使用交叉验证数据作为提前停止标准。
有谁知道如何解决这个问题?谢谢。
【问题讨论】:
标签: python scikit-learn cross-validation xgboost grid-search