关于时间序列的{python回归

时间:2016-08-20 09:41:29

标签: python scikit-learn time-series

我有一个包含8个时间序列的矩阵。

我想在时间t及其价值t-1, t-2,..., t-k之间建立一个模型。

为简单起见,假设线性模型sk.linear_model.LinearRegression和时间序列为:X=np.random.normal(0, 1, (1000, 8))

如何编写使用先前k值估算X(t)的代码?我还想使用估算的X(t)来预测X(t+1)

1 个答案:

答案 0 :(得分:0)

简短的回答是,如果你想用Python进行严肃的时间序列分析,你应该使用像statsmodels.tsa这样的特定libaray。

但是,如果您坚持使用sklearn,则需要设置初始训练集以适合您的模型。如果你使用k点来预测下一个,并且有一个8维时间序列,那么你应该最终得到k * 8个特征和8个训练集目标。这是k设置为3的样本。

import numpy as np
k = 3 #example
n = 1000
num_series = 8
raw_x = np.random.normal(0, 1, (n, num_series))
y = raw_x[k:] 
X = np.empty((n-k, k*num_series))
for i in xrange(n-k):
  X[i] = np.ravel(raw_x[i:i+k])
print X.shape, y.shape

输出

(997, 24) (997, 8)

根据需要分别获取要素和标签的形状。

然后,您可以将此x和y传递给任何支持多个目标(包括LinearRegression)的sklearn模型。如果您想预测未来的点数,只需将适当的数据传递给拟合模型的predict方法。