1.数据获取 2.训练数据 3.数据平稳性检测 4.一阶差分 一阶差分后,ACF&PACF基本上都落在了0轴上,表明一阶差分就够用了。并且可确定pqd的的取值都为1。 5.模型训练 6.残差检测 7.预测import pandas as pd import datetime import pandas_datareader.data as web import matplotlib.pyplot as plt import seaborn as sns from statsmodels.tsa.arima_model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
#可以适用接口从雅虎获取股票数据 start=datetime.datetime(2000,1,1) end=datetime.datetime(2015,12,31) prices=web.DataReader('002578.SZ','yahoo',start,end) prices.head() #存入本地 prices.to_csv('data/yahoo.csv')
#从本地读取数据 本文用的是本地数据,未用接口数据 stock = pd.read_csv('data/yahoo.csv', index_col=0, parse_dates=[0]) stock.head(10)
#下采样 日频数据太多 stock_week = stock['Close'].resample('W-MON').mean() #训练数据 stock_train = stock_week['2000':'2015']
#绘出数据折线图,查看数据是否平稳 stock_train.plot(figsize=(12,8)) plt.legend(bbox_to_anchor=(1.25, 0.5)) plt.title("Stock Close") sns.despine()
从图中可以很明显看出数据是不平稳的。stock_diff = stock_train.diff() stock_diff = stock_diff.dropna() plt.figure() plt.plot(stock_diff) plt.title('一阶差分') plt.show()
ACF&PACF确定q、p
acf = plot_acf(stock_diff, lags=20) plt.title("ACF") acf.show()
pacf = plot_pacf(stock_diff, lags=20) plt.title("PACF") pacf.show()
model = ARIMA(stock_train, order=(1, 1, 1),freq='W-MON') model_pred = model.fit()
from statsmodels.graphics.api import qqplot #残差 resid=model_pred.resid.values fig=plt.figure(figsize=(12,8)) fig=qqplot(resid,line='q',fit=True)
Q-Q图显示符合标准正态分布,模型可用来预测。
pred = result.predict('20140609', '20160701',dynamic=True, typ='levels') plt.figure(figsize=(6, 6)) plt.xticks(rotation=45) plt.plot(pred) plt.plot(stock_train)
股票预测一般是不能准确是预测具体的值,但可以预测走势。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算