天天看點

手把手:用Python搭建機器學習模型預測黃金價格

自古以來,黃金一直作為貨币而存在,就是在今天,黃金也具有非常高的儲藏價值,那麼有沒有可能預測出黃金價格的變化趨勢呢?

答案是肯定的,讓我們使用機器學習中的回歸算法來預測世界上貴重金屬之一,黃金的價格吧。

我們将建立一個機器學習線性回歸模型,它将從黃金ETF (GLD)的曆史價格中擷取資訊,并傳回黃金ETF價格在第二天的預測值。

GLD 是最大的以黃金進行直接投資的ETF交易基金。

(詳見:http://www.etf.com/GLD)

在python的開發環境下用機器學習預測黃金價格的步驟:

導入Python庫并讀取黃金ETF 的資料

定義解釋變量

将資料切分為模型訓練資料集和測試資料集

建立線性回歸模型

預測黃金ETF的價格

導入Python庫并讀取黃金 ETF 的資料

首先:導入實作此政策所需的所有必要的庫(LinearRegression,pandas,numpy,matplotlib,seaborn和fix_yahoo_finance)

然後我們讀取過去10年間每天黃金ETF的價格資料,并将資料儲存在Df中。我們移除那些不相關的變量并使用dropna函數删除NaN值。然後我們繪制出黃金ETF的收盤價格。

輸出

手把手:用Python搭建機器學習模型預測黃金價格

解釋變量是被用來決定第二天黃金ETF價格數值的變量。簡單地說,就是我們用來預測黃金ETF價格的特征值。本例中的解釋變量是過去3天和9天的價格移動平均值。我們使用dropna()函數删除NaN值,并将特征變量存于X中。

然而,你還可以在X中放入更多你認為對于預測黃金ETF價格有用的變量。這些變量可以是技術名額,也可以是另一種ETF的價格(如黃金礦工ETF (簡稱GDX)或石油ETF(簡稱USO))或美國經濟資料。

手把手:用Python搭建機器學習模型預測黃金價格

定義因變量

同樣,因變量是取決于解釋變量的“被解釋變量”。簡單地說,在這裡就是我們試圖預測的黃金ETF價格。我們将黃金ETF的價格指派為y。

在此步驟中,我們将預測變量(解釋變量)資料和輸出(因變量)資料拆分為訓練資料集和測試資料集。訓練資料用于建立線性回歸模型,将輸入與預期輸出配對。測試資料用于評估模型的訓練效果。

手把手:用Python搭建機器學習模型預測黃金價格

前80%的資料用于訓練模型,其餘的資料用來測試模型。

X_train 和y_train是訓練資料集。

X_test & y_test是測試資料集。

接下來我們将建立一個線性回歸模型。什麼是線性回歸呢?

如果我們試圖捕捉可以最優解釋Y觀測值的X變量和Y變量之間的數學關系,我們将在X的觀測值形成的散點圖中去拟合一條線,那麼這條線,也就是x和y之間的方程就被稱為線性回歸分析。

手把手:用Python搭建機器學習模型預測黃金價格

再進一步地說,回歸解釋了因變量在自變量上的變化。因變量y是你想要預測的變量。自變量x是用來預測因變量的解釋變量。下面的回歸方程描述了這種關系:

然後我們利用拟合方法來拟合自變量和因變量(x和y),進而生成系數和回歸常數。

黃金ETF價格=1.2×3天的移動平均價-0.2×9天的移動平均價+0.39

現在,是時候檢查模型是否在測試資料集中有效了。我們使用由訓練資料集建立的線性模型來預測黃金ETF的價格。預測模型可以得到給定解釋變量X後相應的黃金ETF價格(y)。

手把手:用Python搭建機器學習模型預測黃金價格

圖表顯示了黃金ETF價格的預測值和實際值(藍線是預測值,綠線是實際值)。

現在,讓我們使用score()函數來計算模型的拟合優度。

可以看出,模型的R²是95.81%。R²總是在0到100%之間。接近100%的分數表明該模型能很好地解釋黃金ETF的價格。

祝賀你,你剛剛學會了一種基本而又強大的機器學習技巧。

原文釋出時間為:2018-02-16

本文作者:文摘菌