我目前正在解决一个问题,比较三种不同的机器学习算法在相同数据集上的表现。我将数据集分为70/30的训练/测试集,然后使用GridSearchCV和X_train, y_train
寻找每个算法的最佳参数。
第一个问题是,我应该在训练集上执行网格搜索,还是整个数据集上执行?
第二个问题是,我知道GridSearchCV在其实现中使用K-fold,如果我在GridSearchCV中对比了三种算法并使用相同的X_train, y_train
,那么这是否意味着我进行了交叉验证?
非常感谢您的回答。
GridSearchCV
中使用verbose
参数获取更多详细信息。 - Vivek Kumartscv = TimeSeriesSplit()
。TimeSeriesSplit()
已经为这两个折叠(我们称之为train1/test1和train2/test2)提供了训练/测试集。然后,我可以将此参数tscv
传递给GridSearchCV(..., cv=tscv, ...)
,它将再次将我从TimeSeriesSplit
中获得的训练部分(train1和train2)拆分为“较小”的训练/验证集(smalltrain1/validation1和smalltrain2/validation2)来训练和评估我的模型? - Murilotscv = TimeSeriesSplit(n_splits = 2)
,然后进行grid_search_RF = GridSearchCV(estimator=RandomForestClassifier(), param_grid=param_RF, cv = tscv)
,最后在整个数据集上拟合我的模型grid_search_RF.fit(x, y)
。不太确定这些是否是正确的步骤。 - MurilogridsearchCV
中的tscv
进行了拆分。 - Vivek Kumar