用Prophet在Python中进行时间序列预测
创始人
2024-03-20 17:58:46

 预测通常被认为是报告的发展。报告可以帮助我们回答,发生了什么事?预测有助于回答下一个逻辑问题,将会发生什么?

最近我们被客户要求撰写关于时间序列预测的研究报告,包括一些图形和统计输出。

Prophet的目的是“使专家和非专家可以更轻松地进行符合需求的高质量预测。 

 您将学习如何使用Prophet(在Python中)解决一个常见问题:预测下一年公司的每日订单。 

数据准备与探索

Prophet最适合每日定期数据以及至少一年的历史数据。 我们将使用SQL处理每天要预测的数据:

selectdate,value
from modeanalytics.daily_orders
order by date

 

我们可以将SQL查询结果集通过管道传递R数据框对象中。首先,将您的SQL查询重命名为Daily Orders。然后,在R 中,我们可以使用以下语句将查询结果集传递到数据帧df中:

df = datasets["Daily Orders"]

为了快速了解您的数据框包含多少个观测值,可以运行以下语句:

df.shape

Prophet输入DataFrame中有两列:分别包含日期和数值。 

df.dtypes

确认数据框中的列是正确的数据类型,就可以ds在数据框中创建一个新列,是该列的完全相同的副本:

df['ds'] = df['date']
df['y'] = df['value']

然后,您可以重新调整该date列的用途,以用作数据框的索引:

df.set_index('date')

现在您已经准备好要与Prophet一起使用的数据,在将数据输入到Prophet中之前,将其作图并检查数据。 

Box-Cox变换

通常在预测中,您会明确选择一种特定类型的幂变换,以将其应用于数据以消除噪声,然后再将数据输入到预测模型中(例如,对数变换或平方根变换等)。但是,有时可能难以确定哪种变换适合您的数据。 

Box-Cox变换是一种数据变换,用于评估一组Lambda系数(λ)并选择可实现最佳正态性近似值的值。
对于我们的示例,我们将让该boxcox方法确定用于变换的最佳λ,并将该值返回给名为lam的变量:


# 将Box-Cox转换应用于值列并分配给新列ydf['y'], lam = boxcox(df['value'])

如果我们将新转换的数据与未转换的数据一起绘制,则可以看到Box-Cox转换能够消除随着时间变化而观察到增加的方差:

预测

使用Prophet创建预测的第一步是将fbprophet库导入到我们的Python中:

import fbprophet

将Prophet库导入笔记本后,我们可以从 Prophet开始:

m = fbprophet.Prophet()

实例化Prophet对象后,就可以将模型拟合到历史数据中了。您可以通过fit在Prophet对象上调用方法并传入数据框来实现此目的:

使用Prophet通过Box-Cox转换的数据集拟合模型后,现在就可以开始对未来日期进行预测。 
现在,我们可以使用predict方法对未来数据帧中的每一行进行预测。
此时,Prophet将创建一个分配给变量的新数据框,其中包含该列下未来日期的预测值yhat以及置信区间和预测部分。我们可以使用Prophet的内置plot将预测可视化:
在我们的示例中,我们的预测如下所示:

如果要可视化各个预测成分,则可以使用Prophet的内置plot_components方法:
plot_components在我们的示例数据上运行将返回以下一组成分可视化:

预测和成分可视化显示,Prophet能够准确地建模数据中的潜在趋势,同时还可以精确地建模每周和每年的季节性(例如,周末和节假日的订单量较低)。

逆Box-Cox变换

由于Prophet用于Box-Cox转换后的数据,因此您需要将预测值转换回其原始单位。要将新的预测值转换回其原始单位,您将需要执行Box-Cox逆转换。


inv_boxcox方法有两个必需的输入。要转换的数据数组和转换的λ值。我们将对预测数据帧中的特定列进行逆变换,并提供先前从存储在lam变量中的第一个Box-Cox变换中获得的λ值:


现在,您已将预测值转换回其原始单位,现在可以将预测值与历史值一起可视化:

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...