Самый простой способ разбить тренировочные данные на наборы обучения и проверки - использовать метод train_test_split из sklearn.
from sklearn.model_selection import train_test_split
train_set, val_set = train_test_split(train_data, test_size=0.2)
Однако разделение данных произойдет случайным образом и не обеспечит равное распределение классовили какая-то другая особенность.Давайте предположим, что мы хотим разделить на основе распределения целевой метки (например, - train_data ['y']).Тогда мы должны вместо этого использовать StratifiedShuffleSplit.
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2)
for train_index, val_index in split.split(train_data, train_data['y']):
strat_train_data = train_data.loc[train_index]
strat_val_data = train_data.loc[val_index]
В этом случае тренировочные данные будут разбиты на набор train и val, а распределение 'y' будет одинаковым как в strat_train_data
, так и * 1008.*.Если мы хотим, чтобы разделение происходило на основе определенной функции (например, пол, группа доходов и т. Д.), Замените параметр y функции split () соответствующим образом.