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

时间:2020-12-18 22:24:20

标签: machine-learning scikit-learn cross-validation gridsearchcv k-fold

背景:

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

方法:

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

问题:

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

1 个答案:

答案 0 :(得分:0)

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

<块引用>
  1. 正如你的教授所说,
  2. 最常见的方法是存储 k 模型,然后对那里的预测进行平均,例如。 y_pred = (pred_1 + pred_2 + ... + pred_k) / k,或 你可以使用 sklearn.model_selection.cross_val_predict