Prophet(预言者)facebook时序预测----论文总结以及调参思路

本文介绍了Facebook的Prophet库,它是一个易于使用的时序预测工具,尤其适合非专业人士。Prophet采用加性模型,包含趋势、周期和随机噪声组件,并允许对这些部分进行单独分析。在去除异常值、选择趋势模型、设定转折点和周期性以及调整节假日特征后,可以通过观察图表并微调参数来构建更精确的预测模型。推荐的调参参数包括seasonality_prior_scale、holidays_prior_scale和changepoint_prior_scale。
摘要由CSDN通过智能技术生成
  • Prophet是比较简单易用的,对于非时序预测和机器学习领域专家的是非常容易上手的。其参数大多数都是非常直观的参数。(Prophet的python包大量使用了pandas库,所以使用python做开发的需要首先了解pandas的使用。)

  • Prophet也是一种约定优于配置的思想,写代码只需要按照约定的套路定义好pandas中的dataframe就可以轻松进行预测。

  • 下面我们来进行一个官方网站提供的Quick Start来进行学习了解。

import pandas as pd
import numpy as np
from fbprophet import Prophet
import matplotlib.pyplot as plt

# 数据文件请从github上的Prophet项目下载,并放在代码的对应目录
df = pd.read_csv('examples/example_wp_peyton_manning.csv')
df['y'] = np.log(df[
Prophet-NNAR是一种混合预测模型,它结合了FacebookProphet库和自回归神经网络(Neural Network AR, NNAR)技术。Prophet是一个强大的时间序列分析工具,特别适合有季节性和趋势变化的数据。而NNAR则通过深度学习的方式增强了模型对非线性和复杂性的适应能力。 在Python中,如果你想要实现这样一个模型,首先需要安装`fbprophet`和深度学习库如`Keras`或`PyTorch`。以下是一个简化版的示例,假设我们已经在环境中安装了这些库: ```python import pandas as pd from fbprophet import Prophet from keras.layers import Dense from sklearn.preprocessing import StandardScaler # 加载数据并准备Prophet部分 def prepare_prophet_data(df): df['ds'] = pd.to_datetime(df['ds']) df = df.set_index('ds') return df # 定义NNAR部分 def create_nn_ar_model(input_shape): model = Sequential() model.add(LSTM(units=50, input_shape=input_shape)) model.add(Dense(1)) # 输出一层,用于预测 model.compile(optimizer='adam', loss='mse') # 使用均方误差作为损失函数 return model # 结合两个模型 def prophet_nnar_forecast(data, prophet_steps, nnar_steps): # 准备Prophet部分 data_prophet = prepare_prophet_data(data) # 创建Prophet模型 m = Prophet() m.fit(data_prophet) # 进行Prophet预测 future = m.make_future_dataframe(periods=prophet_steps) forecast_prophet = m.predict(future) # 对原始数据进行标准化 scaler = StandardScaler() data_scaled = scaler.fit_transform(data.values) # 使用NNAR预测剩余部分 input_shape = (data_scaled.shape[0], 1) nnar_model = create_nn_ar_model(input_shape) forecast_nnar = nnar_model.predict(data_scaled[-nnar_steps:]) # 合并Prophet和NNAR预测结果 forecast = np.concatenate((forecast_prophet[['yhat']].tail(nnar_steps), forecast_nnar), axis=0) return forecast # 使用示例 data = ... # 假设你的时间序列数据在这里 forecast = prophet_nnar_forecast(data, prophet_steps=365, nnar_steps=90) # 设置Prophet和NNAR预测的时间步长
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值