股票預測
阿新 • • 發佈:2018-03-27
gpl sta gpo fig drop das eve pandas fit
利用ARIMA模型來進行時間序列的預測,數據集是雅虎財經的離線股票數據
import pandas as pd import pandas_datareader import datetime import matplotlib.pyplot as plt import seaborn as sns from matplotlib.pylab import style from statsmodels.tsa.arima_model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacf style.use(‘ggplot‘) plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]#用來正常顯示中文標簽 plt.rcParams[‘axes.unicode_minus‘] = False#用來正常顯示負號 stock = pd.read_csv(‘D:/T10yr.csv‘, index_col=0, parse_dates=[0]) # print(stock.head()) stock_week = stock[‘Close‘].resample(‘W-MON‘).mean() stock_train = stock_week[‘2000‘ : ‘2012‘] # print(stock_train)stock_train.plot(figsize=(12, 8)) plt.legend(bbox_to_anchor=(1.25, 0.5)) plt.title(‘Stock Close‘) sns.despine()# 刪除上方和右方的邊框 # plt.show() #數據差異過大,進行一階差分 stock_diff = stock_train.diff() stock_diff = stock_diff.dropna() print(stock_diff) plt.figure()#新生成一塊畫布 plt.plot(stock_diff) plt.title(‘一階差分‘) # plt.show()#畫圖ACF確定幾階 acf = plot_acf(stock_diff, lags=20) plt.title(‘ACF‘) # plt.show() #PACF pacf = plot_pacf(stock_diff, lags=20) plt.title(‘PACF‘) # plt.show() #ARIMA model model = ARIMA(stock_train, order=(1, 1, 1), freq=‘W-MON‘) result = model.fit() # print(result.summary()) pred = result.predict(‘20110103‘, ‘20160701‘, dynamic=True, typ=‘levels‘) print(pred) plt.figure(figsize=(6, 6)) plt.plot(pred) plt.plot(stock_week) plt.show()
股票預測