Prophet 之使用篇(二)——预测增长



0

本使用说明教程主要翻译整理自 Prophet 的官方说明文档之 “预测增长”

教程中使用的数据集可在 Prophet 的 github 主页 中的 examples 文件夹 内下载得到。

默认情况下, Prophet 使用线性模型进行预测。当预测增长情况时,通常会存在可到达的最大极限值,例如:总市场规模、总人口数等等。这被称做承载能力,那么预测时就应当在接近该值时趋于饱和。

Prophet 可使用 logistic 增长 趋势模型进行预测,同时指定承载能力。下面使用 R 语言的维基百科主页 访问量(取对数)的实例来进行说明。

首先,读入数据。

1
2
3
4
5
6
7
# Python
import pandas as pd
import numpy as np
from fbprophet import Prophet
df = pd.read_csv('./examples/example_wp_R.csv')
df['y'] = np.log(df['y'])
1
2
3
4
5
# R
library(prophet)
df <- read.csv('./examples/example_wp_R.csv')
df$y <- log(df$y)

新建一列 cap 来指定承载能力的大小。本实例中假设取某个特定的值,通常情况下这个值应当通过市场规模的数据或专业知识来决定。

1
2
# Python
df['cap'] = 8.5
1
2
# R
df$cap <- 8.5

值得注意的是数据框的每行都必须指定 cap 的值,但并非需要是恒定值。如果市场规模在不断地增长,那么 cap 也可以是不断增长的序列。

如之前教程所述来拟合模型,并且通过一个新增的参数来指定采用 logistic 增长:

1
2
3
# Python
m = Prophet(growth='logistic')
m.fit(df)
1
2
# R
m <- prophet(df, growth = 'logistic')

如前所述,我们可以创建一个数据框来预测未来值,不过这里要指定未来的承载能力。我们将未来的承载能力设定得和历史数据一样,并且预测未来 3 年的数据。

1
2
3
4
5
# Python
future = m.make_future_dataframe(periods=1826)
future['cap'] = 8.5
fcst = m.predict(future)
m.plot(fcst);
1
2
3
4
5
# R
future <- make_future_dataframe(m, periods = 1826)
future$cap <- 8.5
fcst <- predict(m, future)
plot(m, fcst)

R 中预测结果如下图所示:



1


转载请注明来自 Vector Blog



当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器