我是机器学习的新手。我对预处理有点困惑。一般来说,
场景 1:我将数据集拆分为训练、测试和验证,并在训练上应用 fit_transform 和测试上的变换等转换。
场景 2:另一种方法是先对整个数据集应用转换,然后将数据集拆分为训练、测试和验证。我在选择、划分预处理和特征工程之前或预处理和特征工程之后的数据时有点困惑。寻找一个有效果和原因的好答案。
我是机器学习的新手。我对预处理有点困惑。一般来说,
场景 1:我将数据集拆分为训练、测试和验证,并在训练上应用 fit_transform 和测试上的变换等转换。
场景 2:另一种方法是先对整个数据集应用转换,然后将数据集拆分为训练、测试和验证。我在选择、划分预处理和特征工程之前或预处理和特征工程之后的数据时有点困惑。寻找一个有效果和原因的好答案。
您绝对应该采用第一种情况。那是因为您使用的转换器具有一些参数(例如,在标准标量的情况下的平均值和标准偏差),并且这些参数是从机器学习模型的参数等数据中学习的。如您所知,您不应该使用验证和测试数据来学习模型参数,出于同样的原因,您也不应该使用它们来学习变压器参数。因此,如果您想尝试实际的机器学习场景,您应该只使用训练样本来拟合您的变压器参数。
预置转换必须应用于所有数据集(训练、测试和验证)。无论您在一个子集中添加什么功能,都必须在其他子集中添加。
如果您正在验证和测试数据是随机选择的,并且您在所有子集上应用了精确的转换,那么这两种情况都可以工作,但第二种情况在某些方面更好:
我建议选择第二个选项,因为它更容易且风险更小。但是,您仍然可以在某个时候同时尝试这两种方法,您会看到每种方法的优缺点。