我应该先 train_test_split 然后使用交叉验证吗?

Should I first train_test_split and then use cross validation?

如果我打算使用交叉验证(KFold),我是否仍应将数据集拆分为训练数据和测试数据,并仅在训练集上执行我的训练(包括交叉验证)?还是 CV 会为我做所有事情?例如

选项 1

X_train, X_test, y_train, y_test = train_test_split(X,y)
clf = GridSearchCV(... cv=5) 
clf.fit(X_train, y_train)

选项 2

clf = GridSearchCV(... cv=5) 
clf.fit(X y)

CV 很好,但最好拆分 train/test 以提供对未触及数据的独立分数估计。 如果您的 CV 和测试数据显示大致相同的分数,那么您可以在整个数据上删除 train/test split phase 和 CV 以获得稍微更好的模型分数。但是在你确定你的 split 和 CV 分数一致之前不要这样做。