prophet使用系列之实战(2)
本系列在官方文档内容基础上增加了一些概念性的东西,可以和官方文档互补学习。
教程中使用的数据集可在 Prophet 的 github 主页 中的 examples 文件夹 内下载得到。
本系列只讨论python来实现,R语言请参考官方文档:https://facebook.github.io/prophet/docs/quick_start.html
默认情况下, Prophet 使用线性模型进行预测。当预测增长情况时,通常会存在可到达的最大极限值,例如:总市场规模、总人口数等等。这被称做承载能力,那么预测时就应当在接近该值时趋于饱和。
Prophet 可使用 logistic 增长 趋势模型进行预测,同时指定承载能力。下面使用 R 语言的维基百科主页 访问量(取对数)的实例来进行说明。
首先,读入数据。
# 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'])
新建一列 cap
来指定承载能力的大小。本实例中假设取某个特定的值,通常情况下这个值应当通过市场规模的数据或专业知识来决定。
# Python
df['cap'] = 8.5
值得注意的是数据框的每行都必须指定 cap
的值,但并非需要是恒定值。如果市场规模在不断地增长,那么 cap
也可以是不断增长的序列。
如之前教程所述来拟合模型,并且通过一个新增的参数来指定采用 logistic 增长:
# Python
m = Prophet(growth='logistic')
m.fit(df)
如前所述,我们可以创建一个数据框来预测未来值,不过这里要指定未来的承载能力。我们将未来的承载能力设定得和历史数据一样,并且预测未来 3 年的数据。
# Python
future = m.make_future_dataframe(periods=1826)
future['cap'] = 8.5
fcst = m.predict(future)
m.plot(fcst);