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

Ulu*_*u83 5 python scikit-learn cross-validation

如果我计划使用交叉验证 (KFold),我是否仍应将数据集拆分为训练数据和测试数据并仅在训练集上执行训练(包括交叉验证)?或者简历会为我做一切吗?例如

选项1

X_train, X_test, y_train, y_test = train_test_split(X,y)
clf = GridSearchCV(... cv=5) 
clf.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

选项2

clf = GridSearchCV(... cv=5) 
clf.fit(X y)
Run Code Online (Sandbox Code Playgroud)

Cra*_*Elf 1

CV 很好,但最好将训练/测试分开,以便对未受影响的数据提供独立的分数估计。如果您的 CV 和测试数据显示的分数大致相同,那么您可以在整个数据上放弃训练/测试分割阶段和 CV,以获得稍微更好的模型分数。但在确定您的分割分数和 CV 分数一致之前不要这样做。