К задачам

Walk-forward-разбиения с зазором для временного ряда

СредняяML-задачи
Лучше работает на десктопе
Временные рядыВалидацияУтечки

Для временных рядов нельзя делать random split: validation должен идти после train по времени.

Напишите функцию, которая строит n_folds walk-forward splits. Каждый split использует expanding train prefix, затем optional gap, затем validation window фиксированного размера.

Индексы полуоткрытые: [start, end).

Сигнатура

def walk_forward_splits(n_samples: int, n_folds: int, validation_size: int, gap: int = 0) -> list[dict]:

Каждый элемент результата:

{"train_start": 0, "train_end": ..., "valid_start": ..., "valid_end": ...}

Примеры

Пример 1

Вход:
n_samples = 12
n_folds = 2
validation_size = 3
gap = 0
Выход:[{"train_start":0,"train_end":6,"valid_start":6,"valid_end":9},{"train_start":0,"train_end":9,"valid_start":9,"valid_end":12}]

Пример 2

Вход:
n_samples = 20
n_folds = 3
validation_size = 4
gap = 1
Выход:[{"train_start":0,"train_end":7,"valid_start":8,"valid_end":12},{"train_start":0,"train_end":11,"valid_start":12,"valid_end":16},{"train_start":0,"train_end":15,"valid_start":16,"valid_end":20}]

Пример 3

Вход:
n_samples = 15
n_folds = 1
validation_size = 5
gap = 2
Выход:[{"train_start":0,"train_end":8,"valid_start":10,"valid_end":15}]
Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
05:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Walk-forward splits с gap для временного ряда — ML-задачи задача — ML Mentor