今天介绍下如何将时序数据处理成监督学习可用的训练样本。比较典型的场景是黄金的原始数据,一般黄金走势数据是由两个字段组成,分别是时间字段和价格字段。
走势图如下:
顺便安利一个黄金数据的下载网址:
https://fred.stlouisfed.org/series/GOLDAMGBD228NLBM
那这种时序数据如何转换成包含特征和目标列的监督学习训练样本呢?今天介绍一个叫“数据滑动窗口”的方法。在数据滑动窗口这个方法中,把当前日期叫做t,前一天是t-1,后一天用t+1表示。也就是说假设要预测t+1天的黄金价格的走势,可以把t、t-1、t-2、t-3...这些日期的数据作为特征,t+1天的数据作为目标列去建模。
举个例子,假设要构建2个特征,1个目标列这样的训练样本,使用如下数据集。
训练集可以构建成如下模式,最后一列是目标列:
1125,1121,120.85
1121,1120.85,1122.3
1120.85,1122.3,1107.75
........
基于上述网址下载的数据,我用DataFrame的shift函数实现了一个数据处理的示例,原始数据:
处理后的数据:
from pandas import DataFrame
df = DataFrame()
getTex=open('goldPrice.csv')
rawData=[]
for line in getTex.readlines():
index=line.strip().split(',')
if index[1]=='.':
continue #filter dirty data
rawData.append(index[1])
df['t-1'] = rawData
df['t'] = df['t-1'].shift(-1)
df['t+1'] = df['t-1'].shift(-2)
print(df)
接下来做预测就很简单了,可以用xgboost这样的回归算法去基于过去两天的数据预测接下来一天的价格,最终价格可以通过MAE这样的回归算法评估方法去评估。