Ответ
Корректное разделение критично для оценки модели. Основные методы:
-
train_test_split: Базовый метод для случайного разделения.from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, # 80% train, 20% test random_state=42, # для воспроизводимости stratify=y # сохраняет распределение классов (важно при дисбалансе) ) -
Временные ряды (
TimeSeriesSplit): Для данных с временной зависимостью нельзя перемешивать. Разделение идет по времени.from sklearn.model_selection import TimeSeriesSplit tscv = TimeSeriesSplit(n_splits=5) for train_index, test_index in tscv.split(X): X_train, X_test = X[train_index], X[test_index] -
Кросс-валидация (KFold, StratifiedKFold): Лучше при малом объеме данных.
StratifiedKFoldстратифицирует разбиения.from sklearn.model_selection import StratifiedKFold skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
Ключевой принцип: Тестовая выборка должна имитировать "будущие" данные, которые модель не видела при обучении.