更新时间:2022年12月22日 15时07分07秒 来源:黑马程序员
1. 大数据预测销量前置知识
什么是时间序列数据?
按时间顺序排列的一组随机变量X1,X2,…,Xt 表示一个随机事件的时间序列。
时间序列数据分析的目的是什么?
时间序列数据的分析目的是给定一个已被观测了的时间序列,预测该序列的未来值。
2. 代码实战
项目简介:
在生产和科学研究中,对某一个或者一组变量进行观察测量,将一系列时刻所得到的离散数字组成的序列集合,称之为时间序列。时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法。时间序列分析常用于国名宏观经济控制、市场潜力预测、气象预测、农作物害虫灾害预报等各个方面。本项目实战为时间序列ARIMA
算法建模进行销量预测。
数据集:
https://github.com/huang027/ARIMA/raw/master/arima_data.xls 下载
环境需求:
Anaconda3 +Pycharm + Scikitlearn + statsmodels + arima
运行结果:
实现代码:
时间序列建模基本步骤:
1.获取被观测系统时间序列数据;
2.观测是否为平稳时间序列;对于非平稳时间序列要先进阶差分运算,化为平稳时间序列
3.经过第二步处理,得到平稳时间序列数据.要对平稳时间序列分别求得其自相关系数ACF 和偏相关系数PACF,通过对自相关和偏相关图的分析,得到最佳的阶层p 和阶数q
4.由以上得到的参数用来进行训练,从而得到ARIMA 模型.然后开始对得到的模型进行检验
import pandas as pd import matplotlib.pyplot as plt from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf from statsmodels.tsa.stattools import adfuller as ADF filename='arima_data.xls' forrecastnum=5 data=pd.read_excel(filename,index_col=u'日期') plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False data.plot() plt.title('Time Series') plt.show() plot_acf(data) plt.show() print(u'原始序列的ADF 检验结果为:',ADF(data[u'销量'])) D_data=data.diff(periods=1).dropna() D_data.columns=[u'销量差分'] D_data.plot() plt.show() plot_acf(D_data).show() plot_pacf(D_data).show() print(u'1 阶差分序列的ADF 检验结果为:',ADF(D_data[u'销量差 分'])) from statsmodels.stats.diagnostic import acorr_ljungbox print(u'差分序列的白噪声检验结果为: ',acorr_ljungbox(D_data,lags=1)) from statsmodels.tsa.arima_model import ARIMA data[u'销量'] = data[u'销量'].astype(float) pmax=int(len(D_data)/10) qmax=int(len(D_data)/10) bic_matrix=[] for p in range(pmax+1): tmp=[] for q in range(qmax+1): try: tmp.append(ARIMA(data,(p,1,q)).fit().bic) except: tmp.append(None) bic_matrix.append(tmp) bic_matrix=pd.DataFrame(bic_matrix) print(bic_matrix) p,q=bic_matrix.stack().idxmin() print(u'bic 最小的P 值和q 值为:%s、%s'%(p,q)) model=ARIMA(data,(p,1,q)).fit() model.summary2() #预测最后5 天的数据 forecast,fcasterr,conf_int=model.forecast(5) print("预测5 天的销量数据:",forecast) print("预测的标准差:",fcasterr) print("预测所处的置信区间:",conf_int)
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
智能机器人软件开发 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 |
Python入门教程完整版(懂中文就能学会)【点击】 | 零起点打开Java世界的大门【点击】 |
C++| 匠心之作 从0到1入门学编程【点击】 | PHP|零基础入门开发者编程核心技术【点击】 |
Web前端入门教程_Web前端html+css+JavaScript【点击】 | 软件测试入门到精通【点击】 |