Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在对培训和验证集进行插补后,如何使用交叉验证?_Python_Cross Validation_Imputation - Fatal编程技术网

Python 在对培训和验证集进行插补后,如何使用交叉验证?

Python 在对培训和验证集进行插补后,如何使用交叉验证?,python,cross-validation,imputation,Python,Cross Validation,Imputation,所以我有点困惑 目前,我有一个大约800个实例的数据集。由于缺少值,我将其拆分为一个训练集和验证集,因此我使用sklearn和fit_中的SimpleImputer转换训练集并转换测试集。我这样做是因为如果我想预测新的实例,如果有缺失的值,那么我需要用我插补测试集的相同方式来插补它 现在我想使用交叉验证来训练和评分模型,但这将涉及使用整个数据集并将其拆分为不同的训练集和测试集,因此我担心由于拟合了插补值而导致训练集泄漏 通常,您需要将数据分为三个集—培训集、测试集和验证集。测试集应该完全排除在培

所以我有点困惑

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


现在我想使用交叉验证来训练和评分模型,但这将涉及使用整个数据集并将其拆分为不同的训练集和测试集,因此我担心由于拟合了插补值而导致训练集泄漏

通常,您需要将数据分为三个集—培训集、测试集和验证集。测试集应该完全排除在培训之外(您的担心是正确的)。当使用交叉验证时,您不需要担心分割培训集和验证集-这就是交叉验证为您所做的!只需将培训集传递给交叉验证器,允许其在幕后分为培训和验证,并在测试集上测试最终模型(该测试集已完全排除在培训过程之外)。

但如果我在运行CV之前进行插补,然后,来自不同验证集的信息将自动流入训练集。我想我需要再次对每一次折叠进行插补。因此,如果我有一个5倍的简历,我将有5个培训和验证集。我需要计算每个序列集的插补值,并将其应用于验证集。是吗?理想情况下是的,你会想在每个不同的层面上进行插补。Scikit learn允许您通过使用管道来实现这一点,这样您就可以将所有预处理器、插补器和模型堆叠到您的简历中。