您是否在交叉验证(gridsearchcv w/KFold)后预测测试数据以及如何预测?

Do you predict on testdata after crossvalidation (gridsearchcv w/ KFold) and how?

背景:

我在一个使用 scikit-learn 的关于 mulit-class classification 问题的项目上工作。 我的数据集包含 40 个测量对象 (MO) 中每一个的 112 个特征向量。总共 4480 个特征向量,平均分为 4 classes,和 533 个特征。 (有关 the data set 的更多信息,请点击此处)

方法:

拆分数据集(train:34 MO, test:6 MO)并减少特征数量后,主要通过 PCA,我使用 KFold 对不同模型使用 gridsearchcv 调整超参数以进行比较。

问题:

  1. 评估时,是否需要拆分训练数据和测试数据?我的教授说不,交叉验证本身就已经过时了。这违背了我对机器学习最佳实践和 sklearn 交叉验证 documentation 的基本理解。
  2. 当 predicting/evaluating 时,我是否必须考虑测试集中每个 MO 的特征 space?如果是,我该怎么做?例如。 运行 对测试数据进行交叉验证式预测,或者只是对整个测试数据进行预测。

@4.Pi.n 的评论解决了我的问题:

  1. It's exactly as your professor says,
  2. The most common way is to storing k-models, then averaging there predictions, ex. y_pred = (pred_1 + pred_2 + ... + pred_k) / k, or you might use sklearn.model_selection.cross_val_predict