黄金价格预测:如何将时序数据处理成监督学习数据
背景概述
今天介紹下如何將時(shí)序數(shù)據(jù)處理成監(jiān)督學(xué)習(xí)可用的訓(xùn)練樣本。比較典型的場(chǎng)景是黃金的原始數(shù)據(jù),一般黃金走勢(shì)數(shù)據(jù)是由兩個(gè)字段組成,分別是時(shí)間字段和價(jià)格字段。
走勢(shì)圖如下:
順便安利一個(gè)黃金數(shù)據(jù)的下載網(wǎng)址:
https://fred.stlouisfed.org/series/GOLDAMGBD228NLBM
數(shù)據(jù)滑動(dòng)窗口原理
那這種時(shí)序數(shù)據(jù)如何轉(zhuǎn)換成包含特征和目標(biāo)列的監(jiān)督學(xué)習(xí)訓(xùn)練樣本呢?今天介紹一個(gè)叫“數(shù)據(jù)滑動(dòng)窗口”的方法。在數(shù)據(jù)滑動(dòng)窗口這個(gè)方法中,把當(dāng)前日期叫做t,前一天是t-1,后一天用t+1表示。也就是說假設(shè)要預(yù)測(cè)t+1天的黃金價(jià)格的走勢(shì),可以把t、t-1、t-2、t-3...這些日期的數(shù)據(jù)作為特征,t+1天的數(shù)據(jù)作為目標(biāo)列去建模。
舉個(gè)例子,假設(shè)要構(gòu)建2個(gè)特征,1個(gè)目標(biāo)列這樣的訓(xùn)練樣本,使用如下數(shù)據(jù)集。
訓(xùn)練集可以構(gòu)建成如下模式,最后一列是目標(biāo)列:
1125,1121,120.85
1121,1120.85,1122.3
1120.85,1122.3,1107.75
........
代碼示例
基于上述網(wǎng)址下載的數(shù)據(jù),我用DataFrame的shift函數(shù)實(shí)現(xiàn)了一個(gè)數(shù)據(jù)處理的示例,原始數(shù)據(jù):
處理后的數(shù)據(jù):
?
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)
?
接下來做預(yù)測(cè)就很簡(jiǎn)單了,可以用xgboost這樣的回歸算法去基于過去兩天的數(shù)據(jù)預(yù)測(cè)接下來一天的價(jià)格,最終價(jià)格可以通過MAE這樣的回歸算法評(píng)估方法去評(píng)估。
總結(jié)
以上是生活随笔為你收集整理的黄金价格预测:如何将时序数据处理成监督学习数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号文章质量评分算法详解
- 下一篇: 浅谈湖仓一体化对上层机器学习业务的促进