天天看点

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1、Prophet是Facebook发布的基于可分解(趋势+季节+节假日)模型的开源库。它可以用简单直观的参数进行高精神的时间序列预测。

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1.1  拟合过程

教程中使用的数据集可在 Prophet 的 github 主页 中的 examples 文件夹 内下载得到。

from fbprophet import Prophet

# 1. 创建 Prophet 对象
m=Prophet() 

"""
data是训练数据,预测过程需要建立在包含日期ds列的数据框基础上
"""
# 2. 拟合模型
m.fit(data) 

"""
Prophet.make_future_dataframe 来将未来的日期扩展指定的天数,得到一个合规的数据框。
默认情况下,这样做会自动包含历史数据的日期,因此我们也可以用来查看模型对于历史数据的拟合效果。
"""
# 3. 构建带预测日期数据框,periods=365代表除历史数据的日期外再往后推365天
future=m.make_future_dataframe(periods=365)  

"""
将会对每一行未来future 日期得到一个预测值(称为 yhat)。
如果你传入了历史数据的日期,它将会提供样本的模型拟合值。
预测 forecast 创建的对象应当是一个新的数据框,其中包含一列预测值 yhat ,以及成分的分析和置信区间。
"""
# 4. 预测数据集
forecast=m.predict(future) 
forecast[['ds','yhat','yhat_lower','yhat_upper']].tail()

# 5. 展示结果
m.plot(forecast)

# 6. 预测的成分分析绘图,展示预测中的趋势,周效应和年度效应
m.plot_components(forecast)
           

1.2  结果显示

1.2.1  原始数据描述

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1.2.2  构建待预测日期数据框

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1.2.3  预测数据集

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1.2.4  展示预测结果

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

1.2.5  预测成分分析图

Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程
Python时序预测_第二篇 时间序列模型 Prophet(1)_预测过程

通过对数据的分析,我们就可以知道:

①图1是根据trend画出来的,图2是根据weekly画出来的,图3是根据yearly画出来的。

②因为是加法模型,有:forecast['additive_terms'] = forecast['weekly'] + forecast['yearly'];有:forecast['yhat']  = forecast['trend'] +  forecast['additive_terms'] 。因此:forecast['yhat']  = forecast['trend'] +forecast['weekly'] + forecast['yearly']。

如果有节假日因素,那么就会有forecast['yhat']  = forecast['trend'] +forecast['weekly'] + forecast['yearly'] + forecast['holidays']。

在第四部分,我们会讲到节假日因素,对于那些是节假日的天数,forecast['holidays']才会有值,不是节假日的天数,forecast['holidays']为0。

③因为是加法模型,'multiplicative_terms', 'multiplicative_terms_lower', 'multiplicative_terms_upper'这3列为空。

因此,基于上面的分析,weekly中的Monday为0.3的意思就是,在trend的基础上,加0.3;Saturday为-0.3的意思就是,在trend的基础上,减0.3。因此,这条线的高低也在一定程度上反应了“销量的趋势“。

1.3  参考链接

github链接:https://github.com/facebook/prophet/tree/master/python

 博客链接:https://blog.csdn.net/anshuai_aw1/article/details/83412058