1- Правильный вариант - вариант 1. Правильно сделать так, чтобы модель соответствовала вашим данным поезда. Потому что это цель разделения данных на обучающие и тестовые наборы. Набор поездов - это информация, которую вы используете для построения своей модели, а набор тестов используется для проверки вашей модели, вычисления ошибок и точности. Если вы тренируете свою модель с использованием как тестовых, так и обучающих данных, то у вас нет данных для проверки вашей модели. Вот почему вариант 3 не является правильным.
Первое утверждение в варианте 2 эквивалентно
Iso_outliers = IsolationForest().fit(X_train)
Iso_outliers_train = Iso_outliers.predict(X_train)
Так что в этом нет ничего плохого. Однако во втором утверждении вы подходите и прогнозируете, что означает, что вы используете тестовые данные для повторного построения модели и прогнозирования, используя модель, созданную с помощью набора тестов. Таким образом, поезд не используется.
2-Общая практика построения любой модели в машинном обучении (она не зависит от алгоритма, который вы хотите реализовать):
- Сначала используйте данные поезда для построения модели.
- Затем используйте тестовые данные для проверки и оценки модели.
Вы можете прочитать вики-страницу , чтобы лучше понять, как разделить данные на наборы для проверки соответствия поезда.