Scikit-learn использует очень удобный подход, основанный на методах fit
и predict
. У меня есть данные временного ряда в формате, подходящем для fit
и predict
.
Например, у меня есть следующий Xs
:
[[1.0, 2.3, 4.5], [6.7, 2.7, 1.2], ..., [3.2, 4.7, 1.1]]
и соответствующий ys
:
[[1.0], [2.3], ..., [7.7]]
Эти данные имеют следующее значение. Значения, хранящиеся в ys
, образуют временной ряд. Значения в Xs
являются соответствующими зависимыми от времени "факторами", которые, как известно, оказывают определенное влияние на значения в ys
(например, температура, влажность и атмосферное давление).
Теперь, конечно, я могу использовать fit(Xs,ys)
. Но затем я получаю модель, в которой будущие значения в ys
зависят только от факторов и не зависят от предыдущих значений Y
(по крайней мере, напрямую), и это ограничение модели. Я хотел бы иметь модель, в которой Y_n
зависит также от Y_{n-1}
и Y_{n-2}
и т.д. Например, я могу использовать экспоненциальную скользящую среднюю в качестве модели. Какой самый элегантный способ сделать это в scikit-learn
ADDED
Как уже упоминалось в комментариях, я могу расширить Xs
, добавив ys
. Но этот способ имеет некоторые ограничения. Например, если я добавлю последние 5 значений Y
в качестве 5 новых столбцов на X
, информация о временном упорядочении ys
будет потеряна. Например, в X
нет указаний на то, что значения в пятом столбце соответствуют значению в 4-м столбце и так далее. В качестве модели я мог бы иметь линейную подгонку последних пяти ys
и использовать найденную линейную функцию для предсказания. Но если у меня 5 значений в 5 столбцах, это не так тривиально.
ADDED 2
Чтобы сделать мою проблему еще более ясной, я хотел бы привести один конкретный пример. Я хотел бы иметь "линейную" модель, в которой y_n = c + k1*x1 + k2*x2 + k3*x3 + k4*EMOV_n
, где EMOV_n - только экспоненциальная скользящая средняя. Как я могу реализовать эту простую модель в scikit-learn?