【问题标题】:How to use cross validation after imputing on a training and validation set?在输入训练和验证集后如何使用交叉验证?
【发布时间】:2019-05-18 10:21:36
【问题描述】:

所以我让自己有点困惑。

目前,我有大约 800 个实例的数据集。由于缺少值,我已将其拆分为训练集和验证集,因此我使用了 sklearn 中的 SimpleImputer 和 fit_transform-ed 训练集并转换了测试集。我这样做是因为如果我想预测新实例,如果有缺失值,那么我需要以与估算测试集相同的方式估算它。

现在我想使用交叉验证来训练和评分模型,但这将涉及使用整个数据集并将其拆分为不同的训练和测试集,所以我担心训练集的泄漏,因为估算值被拟合?

【问题讨论】:

    标签: python cross-validation imputation


    【解决方案1】:

    通常,您需要将数据分成三组:训练集、测试集和验证集。测试集应该完全排除在训练之外(您的担忧是正确的。)使用交叉验证时,您无需担心拆分训练集和验证集 - 这就是交叉验证为您所做的!只需将训练集传递给交叉验证器,让它在后台拆分为训练和验证,然后在您的测试集上测试最终模型(已完全排除在训练过程之外)。

    【讨论】:

    • 但是如果我在运行 CV 之前进行插补,那么来自不同验证集的信息将自动流入训练集。我想我需要再次对每个折叠进行估算。因此,如果我有 5 倍的 CV,我将有 5 个训练和验证集。我需要计算每个训练集的插补值并将它们应用于验证集。对吗?
    • 理想情况下是的,您需要在每个不同的折叠处进行估算。 Scikit-learn 允许您通过使用管道来做到这一点,因此您可以将所有预处理器、输入器和模型堆叠到您的 CV 中。
    猜你喜欢
    • 2016-01-29
    • 2021-12-10
    • 2011-12-16
    • 1970-01-01
    • 2012-02-21
    • 2020-11-18
    • 2020-09-14
    • 2018-05-03
    • 2019-12-23
    相关资源
    最近更新 更多