一、windows环境安装prophet步骤
第一步安装Anaconda,配置相关环境变量,在命令行下执行
安装完Anaconda后配置清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes
查看配置 conda config --show
第二步安装C compiler,mingw-w64
prophet主要依赖pystan
PyStan windows环境要求: Python 2.7:不支持并行采样 Python 3.5或更高版本:支持并行采样 PyStan依赖C 编译器 PyStan针对mingw-w64进行了测试,该编译器适用于两个Python版本(2.7,3.x)并支持x86和x64
安装命令如下
conda install libpython m2w64-toolchain -c msys2
第三步安装PyStan
conda install pystan -c conda-forge
第四步安装fbprophet
conda install -c conda-forge fbprophet
二、prophet快速开发
demo代码:https://github.com/lilihongjava/prophet_demo/tree/master/quick_start
代码语言:javascript复制# encoding: utf-8
"""
@author: lee
@time: 2019/5/10 14:55
@file: main.py.py
@desc:
"""
import pandas as pd
from fbprophet import Prophet
from pandas.plotting import register_matplotlib_converters
def main():
df = pd.read_csv('./data/example_wp_log_peyton_manning.csv')
print(df.head())
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
print(future.tail())
forecast = m.predict(future)
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
register_matplotlib_converters()
fig1 = m.plot(forecast)
fig1.show()
fig2 = m.plot_components(forecast)
fig2.show()
if __name__ == "__main__":
main()
三、API讲解
下面实例的数据使用的是佩顿 · 曼宁(前美式橄榄球四分卫)的维基百科主页上每日访问量(取对数)的时间序列数据(2007/12/10 - 2016/01/20)。这个数据集具有多季节周期性、不断变化的增长率和可以拟合特定日期(例如佩顿 · 曼宁的季后赛和超级碗)等 。
首先我们将导入数据:
df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv') df.head()
实例化一个Prophet对象来拟合模型。预测过程的任何设置都将传递给构造函数。然后调用它的fit方法并传入数据。安装需要1-5秒。
m = Prophet() m.fit(df)
然后在dataframe(上面df)上进行预测,dataframe包含要进行预测的日期,按你希望预测的天数,将数据延伸(原数据是2007-12-10到2016-01-20,配置了365后数据延申至2017-01-19)。可以通过使用Prophet.make_future_dataframe方法指定天数。
future = m.make_future_dataframe(periods=365) future.tail()
predict方法将通过future变量为每个行指定一个名为yhat的预测值。forecast对象是一个新的dataframe,其中包含一个名为yhat的预测列,以及预测的上下边界"yhat_upper"、"yhat_lower" forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
可以通过调用Prophet.plot方法并传入数据来绘制预测图。 fig1 = m.plot(forecast)
上图是一个整体的预测结果图,它包含了从历史数据的时间起点到期望预测的未来时间终点的结果。图中的ds坐标表示时间,y坐标对应预测值。图中的黑点表示已知的历史数据,由图上我们很容易发现数据中的异常点,蓝色曲线表示模型的预测值。仔细查看蓝色曲线,我们可以发现,曲线轮廓的上下边界有浅蓝色区域,它表示模型预测值的上、下边界。在评估结果时,我们将蓝色曲线的预测值视作主预测值,上、下边界的预测值作为参考。
如果要查看预测组件,可以使用Prophet.plot_components方法。默认情况下,有trend,yearly和weekly图。如果你包括holidays,那也能显示出图来。 fig2 = m.plot_components(forecast)
参考资料:
https://facebook.github.io/prophet/docs/quick_start.html 官方文档快速开始
https://pystan.readthedocs.io/en/latest/installation_beginner.html pystan官方安装文档