Код 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]]]
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.