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