Калькулятор разбиения на train, validation и test

Введите число примеров и доли теста и валидации. Калькулятор даст точные размеры выборок — с округлением, как в scikit-learn, — размеры фолдов для кросс-валидации k-fold на всём, кроме теста, и сколько батчей занимает одна эпоха.

%
%
Обучающая выборка700
Валидационная выборка100
Тестовая выборка200
Примеров для кросс-валидации (всё, кроме теста)
800
Размер большего фолда
160
Размер меньшего фолда
160
Фолдов большего размера
0
Обучающих примеров за раунд, не меньше
640
Обучающих примеров за раунд, не больше
640
Батчей за эпоху
22
Примеров в последнем батче
28

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Введите число примеров.
  2. Введите доли теста и валидации в процентах (0 — без валидационной выборки).
  3. Введите число фолдов и размер батча.
  4. Смотрите размеры выборок, фолдов и число батчей за эпоху.

Формулы

  • Тест = ⌈N × доля теста⌉, валидация = ⌈N × доля валидации⌉, обучение = N − тест − валидация
  • Пул для кросс-валидации P = N − тест
  • Размеры фолдов ⌊P ÷ k⌋ и ⌈P ÷ k⌉; больший размер у P mod k фолдов
  • Обучение за раунд = P − размер фолда
  • Батчей за эпоху = ⌈обучение ÷ размер батча⌉; в последнем батче — остаток

Пример

1000 примеров, 20 % тест, 10 % валидация, 5 фолдов, батч 32:

  • тест 200, валидация 100, обучение 700;
  • пул для кросс-валидации: 1000 − 200 = 800, значит, в каждом из 5 фолдов по 160 примеров, а в каждом раунде обучение идёт на 640;
  • 700 ÷ 32 = 21,875, поэтому эпоха — это 22 батча, а в последнем 700 − 21 × 32 = 28 примеров.

Советы

  • Перемешивайте данные перед разбиением, а для классификации используйте стратифицированное разбиение, чтобы в каждой выборке сохранились доли классов.
  • Делите по группам, если примеры связаны — несколько строк на пациента или пользователя, — иначе оценка на тесте выйдет слишком оптимистичной.
  • Если последний батч совсем маленький, подумайте о drop_last или о размере батча, на который обучающая выборка делится ровнее.

Частые вопросы

Как округляются размеры выборок?

Как в train_test_split из scikit-learn: тест получает долю с округлением вверх, n_test = ⌈N × доля теста⌉, а обучающая выборка — всё остальное. Валидация округляется вверх так же. Для 1234 примеров и 25 % теста это ⌈308,5⌉ = 309 в тесте и 925 в обучении.

Какого размера фолды при кросс-валидации k-fold?

P примеров делятся на k фолдов по ⌊P ÷ k⌋ или ⌈P ÷ k⌉; как в KFold из scikit-learn, первые P mod k фолдов получают по одному лишнему примеру. 925 примеров на 10 фолдов — это пять фолдов по 93 и пять по 92. В каждом раунде обучение идёт на всех фолдах, кроме одного.

Какие данные идут в кросс-валидацию?

Всё, кроме тестовой выборки: обучающие и валидационные примеры вместе. Тест не трогают до самого конца, а кросс-валидация заменяет одно фиксированное валидационное разбиение.

Какое соотношение выбрать?

80/20 или 70/15/15 — обычная отправная точка для нескольких тысяч примеров. При миллионах примеров на валидацию и тест часто хватает 1–2 %. Для маленьких датасетов кросс-валидация k-fold (k = 5 или 10) использует данные лучше одного разбиения.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 7 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.