Незначительная путаница в разделении перекрестной проверки временных рядов - PullRequest
0 голосов
/ 22 января 2020

Я внедряю авторегрессивную модель для прогнозирования временных рядов (я начинаю изучать временные ряды).

Используемые данные - загруженные 5-летние данные по ценам акций для одной компании из здесь .

Моя путаница связана с перекрестной проверкой. Я знаю о TimeSeriesSplit, и я использую то же самое. У меня нет отдельного набора тестов. Я только пытаюсь предсказать набор проверок для каждой итерации, чтобы увидеть, как работает модель.

folds = TimeSeriesSplit(n_splits=10)

for tr,tt in folds.split(CSCO):

  model = AR(CSCO['Close']) #considering just one attribute- Close

  model_fit = model.fit()

  yhat = model_fit.predict(start=tt[0],end=tt[-1])


comparedf = pd.concat([yhat, CSCO['Close'][tt]], axis=1)

comparedf.columns=['Predicted','Actual']
comparedf.plot()

enter image description here

model.fit () is подгонка модели ко всем моим данным.

model_fit.predict предсказывает на части данных, на которых модель уже обучалась. Таким образом, даже относительно простая модель AR будет хорошо работать (как показано на рисунке). Но если я изменил код на:

folds = TimeSeriesSplit(n_splits=10)

for tr,tt in folds.split(CSCO):
  traindata, testdata = CSCO['Close'].iloc[tr],CSCO['Close'].iloc[tt]

  model = AR(traindata)

  model_fit = model.fit()

  yhat = model_fit.predict(start=tt[0],end=tt[-1])

comparedf = pd.concat([yhat, CSCO['Close'][tt]], axis=1)

Аргументы, которые принимает model_fit.predict, это только начальный и конечный индексы. Но я не уверен, как он может получить доступ к тестовым данным , так как модель подходила / тренировалась на traindata .

Также,

comparedf.columns=['Predicted','Actual']
comparedf.plot()

дает: enter image description here

Прогнозируемые и фактические значения полностью относятся к разным часовым поясам. Я не мог понять, почему это происходит. Я не уверен, как делать прогнозы каждый раз на проверочном наборе во время обучения на тренировочном наборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...