TimeSeriesSplit в SkLearn не работает должным образом - PullRequest
0 голосов
/ 02 мая 2019

TimeSeriesSplitCV не работает должным образом на sklearn.Это подходящее поведение?

Используя приведенный здесь пример: https://scikit -learn.org / stable / modules / generate / sklearn.model_selection.TimeSeriesSplit.html

from sklearn.model_selection import TimeSeriesSplit
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4, 5, 6])
tscv = TimeSeriesSplit(n_splits=5)
print(tscv)  

for train_index, test_index in tscv.split(X):
   print("TRAIN:", train_index, "TEST:", test_index)

Когда вы изменяете число разделений на 2 вместо значения по умолчанию n_splits = 5, тестовые данные становятся длиной 2, а не 1. Однако для всех случаев временных рядов, как определено в документации SKLearn и в большинстве распространенных сценариев, цельэто предсказать следующее наблюдение в хронологическом порядке.Я что-то неправильно понимаю?

TRAIN: [0 1] TEST: [2 3]
TRAIN: [0 1 2 3] TEST: [4 5]

1 Ответ

0 голосов
/ 03 мая 2019

Если набор проверки включает только , следующее наблюдение - это особый случай, когда вы устанавливаете n_splits равным n_samples - 1, где n_samples - количество выборок, которые есть в вашем наборе данных .

Официальный пример документации делает именно это (n_samples=6 и n_splits=5). В целом, наборы валидации содержат более 1 образца.

См. Более полный пример здесь . Ниже я прилагаю сюжет из него. В этом случае n_samples=100, n_splits=4 и каждый из наборов валидации (теста) содержит 20 образцов.

enter image description here

...