久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

手把手:用Python搭建機(jī)器學(xué)習(xí)模型預(yù)測(cè)黃金價(jià)格

 萬(wàn)皇之皇 2018-02-16


大數(shù)據(jù)文摘作品

編譯小明同學(xué)君、吳雙,、Yawei xia


新年總是跟黃金密不可分,。新年第一天,讓我們嘗試用python搭建一個(gè)機(jī)器學(xué)習(xí)線性回歸模型,,預(yù)測(cè)金價(jià),!


自古以來(lái),黃金一直作為貨幣而存在,,就是在今天,,黃金也具有非常高的儲(chǔ)藏價(jià)值,那么有沒有可能預(yù)測(cè)出黃金價(jià)格的變化趨勢(shì)呢,?


答案是肯定的,,讓我們使用機(jī)器學(xué)習(xí)中的回歸算法來(lái)預(yù)測(cè)世界上貴重金屬之一,黃金的價(jià)格吧。


我們將建立一個(gè)機(jī)器學(xué)習(xí)線性回歸模型,,它將從黃金ETF (GLD)的歷史價(jià)格中獲取信息,,并返回黃金ETF價(jià)格在第二天的預(yù)測(cè)值。


GLD 是最大的以黃金進(jìn)行直接投資的ETF交易基金,。

詳見:http://www./GLD


在python的開發(fā)環(huán)境下用機(jī)器學(xué)習(xí)預(yù)測(cè)黃金價(jià)格的步驟:

  • 導(dǎo)入Python庫(kù)并讀取黃金ETF 的數(shù)據(jù)

  • 定義解釋變量

  • 將數(shù)據(jù)切分為模型訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集

  • 建立線性回歸模型

  • 預(yù)測(cè)黃金ETF的價(jià)格


導(dǎo)入Python庫(kù)并讀取黃金 ETF 的數(shù)據(jù)


首先:導(dǎo)入實(shí)現(xiàn)此策略所需的所有必要的庫(kù)(LinearRegression,,pandas,numpy,,matplotlib,,seaborn和fix_yahoo_finance)


# LinearRegression is a machine learning library for linear regression

from sklearn.linear_model import LinearRegression

# pandas and numpy are used for data manipulation

import pandas as pd

import numpy as np

# matplotlib and seaborn are used for plotting graphs

import matplotlib.pyplot as plt

import seaborn

# fix_yahoo_finance is used to fetch data import fix_yahoo_finance as yf


然后我們讀取過(guò)去10年間每天黃金ETF的價(jià)格數(shù)據(jù),并將數(shù)據(jù)儲(chǔ)存在Df中。我們移除那些不相關(guān)的變量并使用dropna函數(shù)刪除NaN值,。然后我們繪制出黃金ETF的收盤價(jià)格,。


# Read data

Df = yf.download('GLD','2008-01-01','2017-12-31')

# Only keep close columns

Df=Df[['Close']]

# Drop rows with missing values

Df= Df.dropna()

# Plot the closing price of GLD

Df.Close.plot(figsize=(10,5))

plt.ylabel('Gold ETF Prices')

plt.show()


輸出



定義解釋變量


解釋變量是被用來(lái)決定第二天黃金ETF價(jià)格數(shù)值的變量。簡(jiǎn)單地說(shuō),,就是我們用來(lái)預(yù)測(cè)黃金ETF價(jià)格的特征值,。本例中的解釋變量是過(guò)去3天和9天的價(jià)格移動(dòng)平均值。我們使用dropna()函數(shù)刪除NaN值,,并將特征變量存于X中,。


然而,你還可以在X中放入更多你認(rèn)為對(duì)于預(yù)測(cè)黃金ETF價(jià)格有用的變量,。這些變量可以是技術(shù)指標(biāo),,也可以是另一種ETF的價(jià)格(如黃金礦工ETF (簡(jiǎn)稱GDX)或石油ETF(簡(jiǎn)稱USO))或美國(guó)經(jīng)濟(jì)數(shù)據(jù)。


Df['S_3'] = Df['Close'].shift(1).rolling(window=3).mean()

Df['S_9']= Df['Close'].shift(1).rolling(window=9).mean()

Df= Df.dropna()

X = Df[['S_3','S_9']]

X.head()


輸出



定義因變量


同樣,,因變量是取決于解釋變量的“被解釋變量”,。簡(jiǎn)單地說(shuō),在這里就是我們?cè)噲D預(yù)測(cè)的黃金ETF價(jià)格,。我們將黃金ETF的價(jià)格賦值為y,。


y = Df['Close']

y.head()


輸出


2008-02-08    91.000000

2008-02-11    91.330002

2008-02-12    89.330002

2008-02-13    89.440002

2008-02-14    89.709999

Name: Close, dtype: float64


將數(shù)據(jù)切分為模型訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集


在此步驟中,我們將預(yù)測(cè)變量(解釋變量)數(shù)據(jù)和輸出(因變量)數(shù)據(jù)拆分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,。訓(xùn)練數(shù)據(jù)用于建立線性回歸模型,,將輸入與預(yù)期輸出配對(duì)。測(cè)試數(shù)據(jù)用于評(píng)估模型的訓(xùn)練效果,。

  • 前80%的數(shù)據(jù)用于訓(xùn)練模型,,其余的數(shù)據(jù)用來(lái)測(cè)試模型。

  • X_train 和y_train是訓(xùn)練數(shù)據(jù)集,。

  • X_test & y_test是測(cè)試數(shù)據(jù)集,。


t=.8

t = int(t*len(Df))

# Train dataset

X_train = X[:t]

y_train = y[:t]  

# Test dataset

X_test = X[t:]

y_test = y[t:]


建立線性回歸模型


接下來(lái)我們將建立一個(gè)線性回歸模型。什么是線性回歸呢?


如果我們?cè)噲D捕捉可以最優(yōu)解釋Y觀測(cè)值的X變量和Y變量之間的數(shù)學(xué)關(guān)系,,我們將在X的觀測(cè)值形成的散點(diǎn)圖中去擬合一條線,,那么這條線,也就是x和y之間的方程就被稱為線性回歸分析,。

再進(jìn)一步地說(shuō),回歸解釋了因變量在自變量上的變化,。因變量y是你想要預(yù)測(cè)的變量,。自變量x是用來(lái)預(yù)測(cè)因變量的解釋變量。下面的回歸方程描述了這種關(guān)系:


Y = m1 * X1 + m2 * X2 + CGold ETF price = m1 * 3 days moving average + m2 * 15 days moving average + c


然后我們利用擬合方法來(lái)擬合自變量和因變量(x和y),,從而生成系數(shù)和回歸常數(shù),。


linear = LinearRegression().fit(X_train,y_train)

print 'Gold ETF Price =', round(linear.coef_[0],2), \

'* 3 Days Moving Average', round(linear.coef_[1],2), \

'* 9 Days Moving Average +', round(linear.intercept_,2)


輸出


黃金ETF價(jià)格=1.2×3天的移動(dòng)平均價(jià)-0.2×9天的移動(dòng)平均價(jià)+0.39


預(yù)測(cè)黃金ETF的價(jià)格


現(xiàn)在,是時(shí)候檢查模型是否在測(cè)試數(shù)據(jù)集中有效了。我們使用由訓(xùn)練數(shù)據(jù)集建立的線性模型來(lái)預(yù)測(cè)黃金ETF的價(jià)格,。預(yù)測(cè)模型可以得到給定解釋變量X后相應(yīng)的黃金ETF價(jià)格(y),。


predicted_price = linear.predict(X_test)  

predicted_price = pd.DataFrame(predicted_price,index=y_test.index,columns = ['price'])  

predicted_price.plot(figsize=(10,5))  

y_test.plot()  

plt.legend(['predicted_price','actual_price'])  

plt.ylabel('Gold ETF Price')  

plt.show()


輸出



圖表顯示了黃金ETF價(jià)格的預(yù)測(cè)值和實(shí)際值(藍(lán)線是預(yù)測(cè)值,綠線是實(shí)際值),。


現(xiàn)在,,讓我們使用score()函數(shù)來(lái)計(jì)算模型的擬合優(yōu)度。


r2_score = linear.score(X[t:],y[t:])*100  

float('{0:.2f}'.format(r2_score))


可以看出,,模型的R2是95.81%,。R2總是在0到100%之間。接近100%的分?jǐn)?shù)表明該模型能很好地解釋黃金ETF的價(jià)格,。


祝賀你,,你剛剛學(xué)會(huì)了一種基本而又強(qiáng)大的機(jī)器學(xué)習(xí)技巧。


原文鏈接:

https://www./blog/gold-price-prediction-using-machine-learning-python/


【今日機(jī)器學(xué)習(xí)概念】

Have a Great Definition

志愿者介紹


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多