时序预测工具库(Prophet)介绍+代码

article/2025/9/19 7:34:18

时序预测工具库(Prophet)

    • 一、Prophet 简介
    • 二、Prophet 适用场景
    • 三、Prophet 算法的输入输出
    • 四、Prophet 算法原理
    • 五、与机器学习算法的对比
    • 六、代码
      • 6.1 依赖安装
      • 6.2 预测demo
      • 6.3 效果图
    • 七、参考资料
    • 八、官方链接:
    • 九、案例链接:

参考内容
时间序列模型Prophet使用详细讲解
初识Prophet模型(一)-- 理论篇

一、Prophet 简介

Prophet是Facebook开源的时间序列预测算法,可以有效处理节假日信息,并按周、月、年对时间序列数据的变化趋势进行拟合。根据官网介绍,Prophet对具有强烈周期性特征的历史数据拟合效果很好,不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形。算法提供了基于Python和R的两种实现方式。

从论文上的描述来看,这个 prophet 算法是基于时间序列分解和机器学习的拟合来做的,其中在拟合模型的时候使用了 pyStan 这个开源工具,因此能够在较快的时间内得到需要预测的结果。

二、Prophet 适用场景

Prophet适用于具有明显的内在规律的商业行为数据,例如:有如下特征的业务问题:
● 有至少几个月(最好是一年)的每小时、每天或每周观察的历史数据;
● 有多种人类规模级别的较强的季节性趋势:每周的一些天和每年的一些时间;
● 有事先知道的以不定期的间隔发生的重要节假日(比如国庆节);
● 缺失的历史数据或较大的异常数据的数量在合理范围内;
● 有历史趋势的变化(比如因为产品发布);
● 对于数据中蕴含的非线性增长的趋势都有一个自然极限或饱和状态。

三、Prophet 算法的输入输出

在这里插入图片描述
上图为一个时间序列场景:
● 黑色表示原始的时间序列离散点
● 深蓝色的线表示使用时间序列来拟合所得到的取值
● 浅蓝色的线表示时间序列的一个置信区间,也就是所谓的合理的上界和下界
● prophet 所做的事情就是:

  • 输入已知的时间序列的时间戳和相应的值;
  • 输入需要预测的时间序列的长度;
  • 输出未来的时间序列走势。
  • 输出结果可以提供必要的统计指标,包括拟合曲线,上界和下界等。
    传入prophet的数据分为两列 ds 和 y ,ds表示时间序列的时间戳,y表示时间序列的取值

其中:
● ds是pandas的日期格式,样式类似与YYYY-MM-DD for a date or YYYY-MM-DD HH:MM:SS;
● y列必须是数值型,代表着我们希望预测的值。

通过 prophet 的计算,可以计算出:
● yhat,表示时间序列的预测值
● yhat_lower,表示预测值的下界
● yhat_upper,表示预测值的上界

四、Prophet 算法原理

算法模型:
在这里插入图片描述

模型整体由三部分组成:
● growth(增长趋势)
● seasonality(季节趋势)
● holidays(节假日对预测值的影响)
其中:
● g(t) 表示趋势项,它表示时间序列在非周期上面的变化趋势;
● s(t) 表示周期项,或者称为季节项,一般来说是以周或者年为单位;
● h(t) 表示节假日项,表示时间序列中那些潜在的具有非固定周期的节假日对预测值造成的影响;
● 即误差项或者称为剩余项,表示模型未预测到的波动, 服从高斯分布;
Prophet 算法就是通过拟合这几项,然后最后把它们累加起来就得到了时间序列的预测值。

五、与机器学习算法的对比

与先进的机器学习算法如LGBM相比,Prophet作为一个时间序列的工具。
优点就是不需要特征工程就可以得到趋势,季节因素和节假日因素。
但是这同时也是它的缺点之一,它无法利用更多的信息,如在预测商品的销量时,无法利用商品的信息,门店的信息,促销的信息等。

因此,寻找一种融合的方法是一个迫切的需求。

六、代码

6.1 依赖安装

# 安装pystan
conda install pystan# 安装plotly
conda install plotly -y# 安装prophet
sudo pip install fbprophet

6.2 预测demo

测试数据集
example_wp_log_peyton_manning.csv
在这里插入图片描述

import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt# 读入数据集
df = pd.read_csv('data/example_wp_log_peyton_manning.csv')
print(df.head())
# 拟合模型
m = Prophet()
m.fit(df)# 构建待预测日期数据框,periods = 365 代表除历史数据的日期外再往后推 365 天
future = m.make_future_dataframe(periods=365)
future.tail()
# 预测数据集
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
# 展示预测结果
m.plot(forecast)
# 预测的成分分析绘图,展示预测中的趋势、周效应和年度效应
m.plot_components(forecast)
plt.show()

6.3 效果图

在这里插入图片描述
在这里插入图片描述

七、参考资料

● 时间序列模型Prophet使用详细讲解
● Prophet官网
● github项目
● 论文:Forecasting at scale
● Facebook 时间序列预测算法 Prophet 的研究

八、官方链接:

● 论文:《Forecasting at scale》,https://peerj.com/preprints/3190/
● github:https://github.com/facebook/prophet
● 官网:https://facebook.github.io/prophet/

九、案例链接:

● 预测股价并进行多策略交易:https://mp.weixin.qq.com/s/bf_CHcoZMjqP6Is4ebD58g
● 预测Medium每天发表的文章数:https://mp.weixin.qq.com/s/1wujYYDP_P2uerZzZBaspg
● 预测网站流量:https://pbpython.com/prophet-overview.html
● 预测空气质量:https://mp.weixin.qq.com/s/S-NNG7BmviitBmMBJRJSRQ
● 预测客运量:https://www.analyticsvidhya.com/blog/2018/05/generate-accurate-forecasts-facebook-prophet-python-r/
● 疫情预测分析:https://mp.weixin.qq.com/s/fZpsy1bQ3Olhng1P5p5WAg
● 原理讲解:https://mp.weixin.qq.com/s/675ASxDSVH_8BX6W8WRRqg
● 知乎专栏:https://zhuanlan.zhihu.com/p/52330017
● 股票价格预测:https://mp.weixin.qq.com/s/78xpmsbC2N1oZ3UIMm29hg
● 高致病性传染病的传播趋势预测——时间序列预测算法Prophet:https://aistudio.baidu.com/aistudio/projectdetail/525311?channelType=0&channel=0


http://chatgpt.dhexx.cn/article/qKUTRbrl.shtml

相关文章

图的顺序存储及其深度优先遍历和广度优先遍历

图的基本概念 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关&am…

算法模板-深度优先遍历

简介 深度优先遍历,顾名思义对于树或者图中的某个节点,尽可能往一个方向深入搜索下去。具体而言,从某个节点v出发开始进行搜索,不断搜索直到该节点的所有边都被遍历完。对于很多树、图和矩阵地搜索问题,深度优先遍历是…

图的深度优先遍历java代码详解

代码是根据矩阵来实现深度优先遍历的 邻接结点就是按照vertex中的顺序来一个一个来找的 if(edges[i][j]>0&&!isVisited[j]) { return j; } 就很好的说明了 如果没找到就return -1 回到dfs(i)这一层 再retur…

图(深度优先遍历、广度优先遍历)

文章目录 一、图的概述1.1 什么是图1.2 图对比线性表和树1.3 图的常见概念 二、图的存储方式2.1 邻接矩阵2.2 邻接表 三、图的遍历3.1 图的深度优先遍历3.1.1 什么是深度优先遍历3.1.2 深度优先遍历的步骤3.1.3 深度优先遍历代码实现 3.2 图的广度优先遍历3.2.1 什么是广度优先…

树与图的深度优先遍历

目录 一、概念 二、操作说明 1.树与图的深度优先遍历 2.树的DFS序 3.树的深度 4.树的重心 5.图的连通块划分 三、例题实践 1.树的重心例题实战 a.题目描述 b.解题思路 c.代码实现 一、概念 树与图的深度优先遍历:深度优先遍历,就是在每一个…

算法总结-深度优先遍历和广度优先遍历

深度优先遍历(Depth First Search,简称DFS) 与广度优先遍历(Breath First Search,简称BFS)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。 一、深度优先遍历 深度优先…

图的两种遍历:深度优先遍历+广度优先遍历

一、深度优先遍历 1、简介 深度优先遍历是指按照深度方向搜索,它类似于树的先根遍历,是树的先根遍历的推广。 基本思想(通俗) 选一条路走到 底,直到 走不通,就 原路返回看看 是否还有路可走,如…

C++实现图的深度优先遍历和广度优先遍历

图的深度和广度优先遍历 图的深度优先遍历1、算法思想2、邻接矩阵构造图3、邻接表构造图 图的广度优先遍历1、算法思想2、邻接矩阵构造图 参考 图的深度优先遍历 1、算法思想 (1)从图中的某个初始点 v 出发,首先访问初始点 v.(…

深度优先遍历

1.先序序列为a,b,c,d 的不同二叉树的个数是 (14) 。 13 14 15 16 f(n)c(n 2n)/n1 2.在构建哈弗曼树时,要使树的带权路径长度最小,只需要遵循一个原则,那就是:权重越大的结点离树…

图的遍历——深度优先遍历与广度优先遍历

目录 何谓遍历? 图的遍历特点 图的遍历方式 深度优先搜索 过程分析 案例分析: 算法的代码实现 测试案例: 测试结果如下: 遍历非连通图 算法复杂度分析 额外补充 广度优先搜索 过程分析 辅助队列 算法的代码实现 队…

图的深度优先遍历和广度优先遍历

本文参考自《大话数据结构》 文章目录 定义图的存储结构邻接矩阵邻接表 图的遍历深度优先遍历邻接矩阵代码邻接表代码 广度优先遍历邻接矩阵邻接表 最小生成树最短路径算法 定义 图(Graph) 是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V&#xff0…

深度优先遍历和广度优先遍历

深度优先遍历和广度优先遍历 什么是 深度/广度 优先遍历? 深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。 这…

图的遍历(深度优先搜索)

1、深度优先搜索遍历过程 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出…

图的遍历算法之深度优先遍历(DFS)(C++)

图的深度优先遍历思想是: 从图中某结点出发,访问其某一相邻结点,再访问该结点的相邻结点,直至访问完所有的结点。 形象的比喻就是:一条路走到头,回头再走没走过的路。 可见,深度优先遍历是一…

图的深度优先遍历

一 图遍历介绍 所谓图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略。 1 深度优先遍历 2 广度优先遍历 二 深度优先遍历基本思想 图的深度优先搜索(Depth First Search…

图的遍历 ——深度优先遍历

图的遍历 ——深度优先遍历 深度优先搜索(Depth First Search,DFS)是最常见的图搜索方法之一。 深度优先搜索沿着一条路径一直搜索下去,在无法搜索时,回退到刚刚访问过的节点。深度优先遍历是按照深度优先搜索的方式…

二、图的遍历——深度优先遍历

深度优先遍历,也有称为深度优先搜索,简称为DFS。 深度优先遍历其实就是一个递归的过程,它从图中某个顶点ⅴ出发,访问此顶点,然后从V的未被访问的邻接点出发深度优先遍历图,直至图中所有和V有路径相通的顶点…

图的遍历(深度优先遍历DFS,广度优先遍历BFS)以及C语言的实现

遍历的定义: 从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算. 一:深度优先遍历(DF&#xff…

使用SSM框架上传图片

使用SSM框架上传图片 为了大家方便对照,我上传源码到网盘,有兴趣的自取. ps:其中有一个存储数据的网页,我没删除,可以忽略 链接:https://pan.baidu.com/s/1u24E8mUs4K-raoQgx-ae2A 提取码:java 建数据表 CREATE DATABASE my_resource;USE my_resource…

SSM框架简单介绍

一. SSM框架简介及特征 1.SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可…