Код Middle Валидация и утечки обновлено

Разбиение временного ряда

Условие

Напишите time_splits(n, n_splits, test_size, gap): разбиения для временного ряда длины n в духе TimeSeriesSplit. Валидационные окна длины test_size идут подряд и заканчиваются в конце ряда; для каждого окна трейн это все индексы до его начала минус gap последних. Верните список пар [[train_start, train_end], [val_start, val_end]] (концы не включительно) в хронологическом порядке. Если трейн пуст, такое разбиение пропустите.

Примеры

time_splits(10, 3, 2, 0) // [[[0, 4], [4, 6]], [[0, 6], [6, 8]], [[0, 8], [8, 10]]]
time_splits(10, 3, 2, 1) // [[[0, 3], [4, 6]], [[0, 5], [6, 8]], [[0, 7], [8, 10]]]
time_splits(6, 3, 2, 0) // [[[0, 2], [2, 4]], [[0, 4], [4, 6]]]

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.