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

本文介绍如何将时序数据,如黄金价格走势,通过数据滑动窗口方法转换为可用于监督学习的训练样本。示例展示了如何利用Python的pandas库进行数据处理,并构建包含特征和目标列的训练集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景概述

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

屏幕快照 2020-09-08 上午10.27.39.png

走势图如下:

屏幕快照 2020-09-08 上午10.25.05.png

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

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

数据滑动窗口原理

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

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

屏幕快照 2020-09-08 上午10.27.39.png

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

1125,1121,120.85

1121,1120.85,1122.3

1120.85,1122.3,1107.75

........

代码示例

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

屏幕快照 2020-09-08 上午10.27.39.png

处理后的数据:

屏幕快照 2020-09-08 上午10.40.41.png

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值