更新时间: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【点击】 | 软件测试入门到精通【点击】 |