前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间序列预测神器Prophet【入门教程2-饱和预测】

时间序列预测神器Prophet【入门教程2-饱和预测】

原创
作者头像
皮大大
发布2024-09-05 17:08:02
950
发布2024-09-05 17:08:02
举报
文章被收录于专栏:时序预测

公众号:尤而小屋 编辑:Peter 作者:Peter

大家好,我是Peter~

本文是时间序列预测神器Prophet的第二篇:使用Prophet如何实现饱和预测

饱和预测增长-Saturating Forecasts

默认情况下,Prophet 使用线性模型来进行预测。然而,在预测增长时,通常存在一个可达到的最大点:如总市场规模、总人口规模等。这个点被称为承载能力(carrying capacity),并且预测应该在这个点上达到饱和。

这个时候使用Prophet进行预测时,需要考虑这个上限,可以使用逻辑增长等模型来确保预测值在达到上限后不再增长,而是保持在该水平附近波动。

导入库

代码语言:python
代码运行次数:0
复制
import numpy as np
import pandas as pd
import os
import datetime 
import time
import re
np.random.seed(42)   

import plotly_express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
%matplotlib inline
# 设置支持中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] 
# 设置图像标题字体
plt.rcParams['axes.unicode_minus'] = False
import seaborn as sns
sns.set_theme(style="darkgrid")

import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.tsa.stattools import adfuller
from sklearn.metrics import r2_score,mean_squared_error,mean_squared_log_error

from prophet import Prophet 

import warnings
warnings.filterwarnings('ignore')

读取数据

在本案例中采用维基百科上R语言的日访问量的数据进行建模:

代码语言:python
代码运行次数:0
复制
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_R.csv')
df

需要指定特殊的承载力字段cap(必须为cap):

代码语言:python
代码运行次数:0
复制
df["cap"] = 8.5  # 不一定是固定值

fit训练

实例化过程中指定逻辑增长logistic:

代码语言:python
代码运行次数:0
复制
m = Prophet(growth='logistic')
m.fit(df)

predict预测

代码语言:python
代码运行次数:0
复制
# 1、先指定预测的数据集
future = m.make_future_dataframe(periods=1826) 
代码语言:python
代码运行次数:0
复制
# 2、预测数据中指定cap值
future["cap"] = 8.5
代码语言:python
代码运行次数:0
复制
# 3、实施预测
forecast = m.predict(future)

预测可视化

代码语言:python
代码运行次数:0
复制
m.plot(forecast)
plt.show()

饱和预测减少

在逻辑增长模型中,通常关注的是模型如何接近并达到一个上限(即承载能力),但在某些情况下,模型也可能从一个非零的最小值开始增长。这个非零的最小值可以被称为“饱和最小值”(saturating minimum)。

Prophet在处理饱和预测减少的时候,需要指定一个floor字段,就像cap列用于指定最大值一样。

代码语言:python
代码运行次数:0
复制
df.head()

指定上下限

代码语言:python
代码运行次数:0
复制
# 分别指定cap和floor

df["y"] = 10 - df["y"]  
df["cap"] = 6
df["floor"] = 1.5

future["cap"] = 6
future["floor"] = 1.5

fit&predict

训练和预测过程:

代码语言:python
代码运行次数:0
复制
m = Prophet(growth="logistic")  # 增长的模式为逻辑增长
m.fit(df)

实施预测过程:

代码语言:python
代码运行次数:0
复制
forecast = m.predict(future)

可视化过程:

代码语言:python
代码运行次数:0
复制
m.plot(forecast)
plt.show()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 饱和预测增长-Saturating Forecasts
  • 导入库
  • 读取数据
  • fit训练
  • predict预测
  • 预测可视化
  • 饱和预测减少
    • 指定上下限
      • fit&predict
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档