Вы должны разделить перед предварительной обработкой или вменением.
Разделение между обучением и тестовым набором является попыткой воспроизвести ситуацию, в которой вы располагаете прошлой информацией и строите модель, которую вы будете тестировать на будущей, пока еще неизвестной информации: обучающий набор занимает место прошлого, а тестовый набор занимает место будущего, так что вы можете протестировать свою обученную модель только один раз.
Помня прошлую / будущую аналогию, это означает, что все, что вы делаете для предварительной обработки или обработки ваших данных, например, ввод пропущенных значений, вы должны делать только в обучающем наборе. Затем вы можете вспомнить, что вы сделали со своим тренировочным набором, если ваш тестовый набор также нуждается в предварительной обработке или импутации, так что вы делаете это одинаково для обоих наборов.
Добавлено из комментариев: если вы используете тестовые данные для воздействия на тренировочные данные, то тестовые данные используются для построения вашей модели, поэтому они перестают быть тестовыми данными и не будут обеспечивать честный тест вашей модели. Вы рискуете переобучить, и это было препятствием, что вы сначала разделили тестовые данные