Создайте набор проверки из тренировочного набора Kaggle - PullRequest
0 голосов
/ 19 марта 2019

Поскольку Kaggle предоставляет обучающий набор и набор тестов, я хотел бы знать, как создать набор валидации (набор разработчика) из этого обучающего набора. Цель состоит в том, чтобы иметь три комплекта:
- Учебный комплект + Валидационный комплект = Учебный комплект Kaggle
- Тестовый набор = тестовый набор Kaggle

Дело в том, что проверочный набор должен иметь то же распределение, что и тестовый. Я хотел бы знать, существует ли (простой) способ создания набора проверки, который учитывает это свойство. Я пишу с Python 3, если это может помочь вам ответить мне.

Большое спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Самый простой способ разбить тренировочные данные на наборы обучения и проверки - использовать метод 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 () соответствующим образом.

...