我正在尝试准备一些用于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函数或库可以达到预期的效果?或者这是通过一系列循环手动完成的?此外,这个过程被称为什么?我似乎无法向谷歌寻求解决方案,所以也许我只是不知道用什么词来称呼它。
答案 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,它是一个很好的数据库操作库,尤其是涉及日期时。