如何在Python中预处理时间序列数据以进行预测

时间:2014-11-25 14:47:09

标签: python

我正在尝试准备一些用于Python预测的时间序列数据(Forex)。计划是将时间序列转换为二维Numpy数组,该数组将通过PypeR传递给R作为R矩阵,以训练ANFIS(自适应神经模糊推理系统)进行预测。 (我将经历一个如此复杂的过程的原因纯粹是学术性的。)这将要求前n列是最后n个数据点,第(n + 1)列是当前/预测值。

考虑以下数据点:

Date    AUD-USD
9/1/1999    0.6452
9/2/1999    0.6466
9/3/1999    0.6466
9/4/1999    0.6466
9/5/1999    0.6459
9/6/1999    0.6494
9/7/1999    0.6479
9/8/1999    0.653
9/9/1999    0.6512

为简单起见,让我们说前五个点将用作预测下一个数据点的输入。那么数组应该看起来像:

            t - 5   t - 4   t - 3   t - 2   t - 1   t
9/6/1999    0.6452  0.6466  0.6466  0.6466  0.6459  0.6494
9/7/1999    0.6466  0.6466  0.6466  0.6459  0.6494  0.6479
9/8/1999    0.6466  0.6466  0.6459  0.6494  0.6479  0.653
9/9/1999    0.6466  0.6459  0.6494  0.6479  0.653   0.6512

减去日期(只是为了清楚起见)。

问题是:是否有现成的Python函数或库可以达到预期的效果?或者这是通过一系列循环手动完成的?此外,这个过程被称为什么?我似乎无法向谷歌寻求解决方案,所以也许我只是不知道用什么词来称呼它。

1 个答案:

答案 0 :(得分:0)

您可以轻松地在一行中构建移位的数组。在这里,我使用整数范围来帮助您查看正在发生的事情 - 只需将A替换为您的数据。

import numpy as np

A = np.arange(10)
cut = 6
B = np.array([A[k-cut:k] for k in xrange(cut,A.size)])
print B

,并提供:

[[0 1 2 3 4 5]
 [1 2 3 4 5 6]
 [2 3 4 5 6 7]
 [3 4 5 6 7 8]]

为了解析日期,尝试查看pandas,它是一个很好的数据库操作库,尤其是涉及日期时。