您是否在交叉验证(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 调整超参数以进行比较。
问题:
- 评估时,是否需要拆分训练数据和测试数据?我的教授说不,交叉验证本身就已经过时了。这违背了我对机器学习最佳实践和 sklearn 交叉验证 documentation 的基本理解。
- 当 predicting/evaluating 时,我是否必须考虑测试集中每个 MO 的特征 space?如果是,我该怎么做?例如。 运行 对测试数据进行交叉验证式预测,或者只是对整个测试数据进行预测。
@4.Pi.n 的评论解决了我的问题:
- It's exactly as your professor says,
- 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
背景:
我在一个使用 scikit-learn 的关于 mulit-class classification 问题的项目上工作。 我的数据集包含 40 个测量对象 (MO) 中每一个的 112 个特征向量。总共 4480 个特征向量,平均分为 4 classes,和 533 个特征。 (有关 the data set 的更多信息,请点击此处)
方法:
拆分数据集(train:34 MO, test:6 MO)并减少特征数量后,主要通过 PCA,我使用 KFold 对不同模型使用 gridsearchcv 调整超参数以进行比较。
问题:
- 评估时,是否需要拆分训练数据和测试数据?我的教授说不,交叉验证本身就已经过时了。这违背了我对机器学习最佳实践和 sklearn 交叉验证 documentation 的基本理解。
- 当 predicting/evaluating 时,我是否必须考虑测试集中每个 MO 的特征 space?如果是,我该怎么做?例如。 运行 对测试数据进行交叉验证式预测,或者只是对整个测试数据进行预测。
@4.Pi.n 的评论解决了我的问题:
- It's exactly as your professor says,
- 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