时间序列预测算法---Prophet

  在机器学习和深度学习的世界当中,存在众多经典且有效的(时间)序列模型。这些模型通常通过三种方式来建立样本与样本之间的关联:
ARIMA家族算法群:过去影响未来,因此未来的值由过去的值加权求和而成,以此构建样本与样本之间的关联。
循环网络家族:遍历时间点/样本点,将过去的时间上的信息传递存储在中间变量中,传递给下一个时间点,以此构建样本和样本之间的关联。
卷积网络家族:使用卷积核扫描时间点/样本点,将上下文信息通过卷积计算整合到一起,以此构建样本和样本之间的关联。
时间序列相关参考文章
时间序列预测算法—ARIMA
基于VARMAX模型的多变量时序数据预测
基于机器学习时序库pmdarima实现时序预测
时间序列预测算法—Prophet
时间序列预测算法—LSTM
长时间序列预测算法—Informer
时间序列分类任务—tsfresh
有季节效应的非平稳序列分析
python时间序列处理
时间序列异常值检测方法
时间序列异常值处理方法
更多细节可见官网地址:https://facebook.github.io/prophet/docs/quick_start.html#python-api

一、模型介绍

Prophet 是facebook开源的的一个时间序列预测算法,特别适合于处理具有季节性和趋势的数据。主要思想是将数据分解为如下三个部分:趋势、季节性、节假日和特殊事件。
y(t)=g(t)+s(t)+h(t)+α
其中g(t)表示趋势项,s(t)表示季节项,h(t)表示节假日项,α表示残差项,通常是正态分布的。然后各项分别被拟合,最后的累加结果即是Prophet算法的预测结果。

二、Prophet 案例

Prophet 遵循sklearn模型 API。我们创建类的实例Prophet,然后调用它的fit方法predict。
Prophet 的输入始终是一个包含两列的数据框:ds和y。ds(日期戳)列应为 Pandas 所需的格式,理想情况下,日期为 YYYY-MM-DD,时间戳为 YYYY-MM-DD HH:MM:SS。该y列必须是数字,代表我们希望预测的测量值。

# python -m pip install prophet  安装
#从 v0.6 开始,不再支持 Python 2。
#从 v1.0 开始,PyPI 上的包名称为“prophet”;在 v1.0 之前它是“fbprophet”。
#从 v1.1 开始,支持的最低 Python 版本为 3.7。

import pandas as pd
from prophet import Prophet
#加载数据
df 
### 使用Python Prophet模型进行ETHH1时间序列预测 #### 准备工作 为了使用Prophet模型进行ETHH1(假设为某种特定的时间序列数据集)的时间序列预测,首先需要安装必要的库并导入所需模块。 ```bash pip install pandas prophet matplotlib ``` 接着,在代码中引入这些包: ```python import pandas as pd from prophet import Prophet import matplotlib.pyplot as plt ``` #### 数据预处理 确保输入的数据格式适合于Prophet模型的要求。通常情况下,这涉及到读取CSV文件并将日期列转换成`datetime`对象。对于ETHH1这样的金融类时间序列,可能还需要额外的清洗步骤来处理缺失值等问题。 ```python df = pd.read_csv('path_to_ethh1_data.csv') df['ds'] = pd.to_datetime(df['date_column']) # 假设有一个名为'date_column'的日期字段 df = df.rename(columns={'value_column': 'y'}) # 将目标变量重命名为'y' ``` #### 初始化与训练模型 按照标准流程初始化Prophet实例,并利用准备好的DataFrame `df`来进行拟合操作。 ```python model = Prophet() model.fit(df) ``` #### 创建未来时间段框架 定义想要预测的时间长度,这里以30天为例说明如何构建未来的日期索引表单。 ```python future = model.make_future_dataframe(periods=30) ``` #### 执行预测过程 调用`.predict()`方法基于已有的模型对未来做出估计,并提取感兴趣的几个关键指标如预期值(`yhat`)及其置信区间上下限(`yhat_lower`, `yhat_upper`)。 ```python forecast = model.predict(future) print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()) ``` #### 结果展示 最后一步是对所得的结果进行图形化的呈现,以便更直观地理解趋势变化情况以及不确定性范围内的波动程度。 ```python fig1 = model.plot(forecast) plt.show() # 或者绘制更多细节图 fig2 = model.plot_components(forecast) plt.show() ``` 通过上述一系列的操作就可以完成一次完整的ETHH1时间序列预测任务[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值