黄金价格预测:如何将时序数据处理成监督学习数据

背景概述

今天介绍下如何将时序数据处理成监督学习可用的训练样本。比较典型的场景是黄金的原始数据,一般黄金走势数据是由两个字段组成,分别是时间字段和价格字段。

黄金价格预测:如何将时序数据处理成监督学习数据_第1张图片

走势图如下:

黄金价格预测:如何将时序数据处理成监督学习数据_第2张图片

顺便安利一个黄金数据的下载网址:

https://fred.stlouisfed.org/series/GOLDAMGBD228NLBM

数据滑动窗口原理

那这种时序数据如何转换成包含特征和目标列的监督学习训练样本呢?今天介绍一个叫“数据滑动窗口”的方法。在数据滑动窗口这个方法中,把当前日期叫做t,前一天是t-1,后一天用t+1表示。也就是说假设要预测t+1天的黄金价格的走势,可以把t、t-1、t-2、t-3...这些日期的数据作为特征,t+1天的数据作为目标列去建模。

举个例子,假设要构建2个特征,1个目标列这样的训练样本,使用如下数据集。

黄金价格预测:如何将时序数据处理成监督学习数据_第3张图片

训练集可以构建成如下模式,最后一列是目标列:

1125,1121,120.85

1121,1120.85,1122.3

1120.85,1122.3,1107.75

........

代码示例

基于上述网址下载的数据,我用DataFrame的shift函数实现了一个数据处理的示例,原始数据:

黄金价格预测:如何将时序数据处理成监督学习数据_第4张图片

处理后的数据:

黄金价格预测:如何将时序数据处理成监督学习数据_第5张图片

 

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这样的回归算法评估方法去评估。

你可能感兴趣的:(机器学习,人工智能,机器学习)