我有一个包含19个特征的数据集。现在我需要进行缺失值插补,然后使用scikit的OneHOtEncoder对分类变量进行编码,最后运行机器学习算法。我的问题是,在执行上述所有操作之前,我应该使用scikit的train_test_split方法拆分数据集,还是先将其拆分为训练集和测试集,然后在每个数据集上进行缺失值和编码处理。我的担忧是,如果我先拆分数据集,然后在生成的两个数据集上进行缺失值和其他编码处理,那么在测试集中进行变量编码时,该变量可能会缺少一些值,导致生成的哑变量数量较少。比如,原始数据集中分类变量有3个级别,虽然我们进行随机抽样,但测试集是否有可能没有该变量的全部三个级别,从而导致第一个级别仅生成两个哑变量,而不是三个?什么是正确的方法?是首先拆分,然后在训练集和测试集上执行所有上述操作,还是先在整个数据集上执行缺失值和编码处理,然后再拆分?