prophet快速开发教程

2021-01-14 14:37:41 浏览数 (1)

一、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官方安装文档

0 人点赞