Рассмотрим способы разделения данных на выборки для обучения, валидации и теста модели. Сначала создадим демонстрационный набор:
Наиболее популярно для разделения на выборки использовать возможности библиотеки Scikit-learn. Например, ее функция train_test_split позволяет сформировать готовые датасеты, указав размер тестовой выборки:
Одного зачастую удобнее использовать порядковые номера строк, так как с такими индикаторами разбиения удобнее работать (например, для воспроизведения разбиения в библиотеке машинного обучения H2O). Это можно сделать с train_test_split:
Другой способ - использование функции split библиотеки NumPy. Так как зачастую приходится создавать не только обучающую и тестовую выборки, но еще и валидационную, с ее помощью это сделать проще (для train_test_split потребовался бы вызов два раза):
Чтобы функция сработала, ей помимо индексов потребуется указать номера строк - "разделителей" (также индексы перемешиваем перед этим). А вот так собираем результирующие датасеты:
Для разбиения можно использовать и другие способы из sklearn (но они предполагают деление на две выборки, поэтому и придется вызывать пару раз). Вот пример с ShuffleSplit: