您是不是预测交叉验证后的测试数据(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)以及如何预测?的主要内容,如果未能解决你的问题,请参考以下文章