【发布时间】:2015-07-14 12:29:56
【问题描述】:
我有一个包含 19 个特征的数据集。现在我需要进行缺失值插补,然后使用 scikit 的 OneHOtEncoder 对分类变量进行编码,然后运行机器学习算法。
我的问题是我应该在使用 scikit 的 train_test_split 方法执行上述所有操作之前拆分此数据集,还是应该先拆分为训练和测试,然后对每组数据进行缺失值和编码。
我担心的是,如果我先拆分然后对结果两组进行缺失值和其他编码,在对测试集中的变量进行编码时,测试集不应该缺少该变量的一些值,这可能导致更少.的假人。就像原始数据有 3 个分类级别并且我知道我们正在进行随机抽样,但是是否有可能测试集可能没有该变量的所有三个级别,从而导致只有两个虚拟变量而不是三个虚拟变量?
什么是正确的方法。先拆分,然后在训练和测试上执行上述所有操作,还是先对整个数据集执行缺失值和编码,然后拆分?
【问题讨论】:
-
您应该先估算然后拆分,否则拆分上的估算可能会引入冲突编码,这将使您的训练模型处于冲突状态
标签: python numpy pandas machine-learning scikit-learn