我正在使用GridSearchCV(和BayeSearchCV)来调整我的超参数。我的训练和验证集是预定义的,不需要折叠。根据文档:我将训练集的索引设置为“ -1”,并将验证集的索引设置为“ 0”。但是,在一个玩具示例中,GridSearchCV无法正常工作(下面的附加程序输出)。
from sklearn.model_selection import PredefinedSplit
# This is my training data (train+validation): X_train
# This is the corresponding y: y_train
estimator = lgb.LGBMRegressor(random_state=1000,
objective='quantile',alpha=q*0.01)
# enforeced training set " -1"
my_test_fold = -np.ones(len(X_train), dtype=int)
# validation set "0"
my_test_fold[-100:-50]=0
pcv = PredefinedSplit(test_fold=my_test_fold)
lgbm_cv = GridSearchCV(estimator, param_grid,cv=pcv)
lgbm_cv.fit(X_train, y_train)
pd.DataFrame(lgbm_cv.cv_results_)
程序输出:my_test_fold [-100:-50] = 0
当我设置“ my_test_fold [-100:-50] = 0”时,则cv_results_没有“ mean_test_score”。
当我设置“ my_test_fold [0:50] = 0”时,则cv_results_确实具有“ mean_test_score”。
在我看来,CV是否可以识别验证集,这取决于将哪些数据设置为验证?对我来说,这似乎是一个错误。有什么想法吗?