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

Posted

技术标签:

【中文标题】您是不是预测交叉验证后的测试数据(gridsearchcv w/KFold)以及如何预测?【英文标题】:Do you predict on testdata after crossvalidation (gridsearchcv w/ KFold) and how?您是否预测交叉验证后的测试数据(gridsearchcv w/KFold)以及如何预测? 【发布时间】:2021-03-29 13:24:56 【问题描述】:

背景:

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

方法:

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

问题:

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

【问题讨论】:

1.就像你的教授说的那样,2。最常见的方法是存储 k 模型,然后对那里的预测进行平均,ex. y_pred = (pred_1 + pred_2 + ... + pred_k) / k,或者你可以使用sklearn.model_selection.cross_val_predict 【参考方案1】:

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

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

【讨论】:

以上是关于您是不是预测交叉验证后的测试数据(gridsearchcv w/KFold)以及如何预测?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WEKA 中打印出交叉验证后的预测类

交叉验证

交叉验证

交叉验证(Cross Validation)原理小结

交叉验证(Cross Validation)原理小结

如果使用交叉验证,是否还需要单独分出测试集?