理想情况下,我应该尽早(或至少在特征工程之前)将数据拆分为训练数据和测试数据。这样训练模型的过程就不会受到我对测试数据的了解的影响(例如,使用从训练和测试数据构建的参数来标准化变量)。
但是,最终我将不得不以相同的方式预处理两个数据集。 ** 解决这个问题的最佳方法是什么? **
目前,我可以想到两种方法:
拆分训练数据和测试数据,但将它们连接到同一数据帧中进行预处理。可以在数据框中标记训练和测试数据(例如,1=测试,0=训练)。这使得将字符串变量更改为小写等步骤变得更容易,但我必须格外小心标准化等步骤,以确保我不使用测试数据
将训练和测试数据拆分为单独的数据帧,并首先使用训练集。训练模型后,以与训练数据集相同的方式预处理测试数据。 我觉得方法 2 不太容易出错,因为测试数据不会泄漏数据。然而,这听起来也更乏味。 **对于那些使用方法 2 的人来说,您如何简化这个过程? **
总的来说,我想了解围绕此问题的最佳实践是什么。预先感谢!
那里有各种选项,我的意思是使用 sklearn Pipeline 来完成此任务,作为最终估计器之前的一系列转换。