首页 > 编程语言 >拓端tecdat|用Prophet在Python编程代写中进行时间序列预测

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测

时间:2022-11-14 22:31:57浏览次数:48  
标签:Box 转换 Python Prophet tecdat df Cox 数据

 

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

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

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

数据准备与探索

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

select
date,
value
from modeanalytics.daily_orders
order by date


现在,我们每天都有数据,我们可以将SQL查询结果集通过管道传递到Python笔记本中的pandas dataframe对象中。首先,将您的SQL查询重命名为​​Daily Orders​​​。然后,在Python笔记本中,我们可以使用以下语句将查询结果集通过管道传递到数据框​​df​​:

df = datasets["Daily Orders"]

为了快速了解您的数据框包含多少个观测值,可以运行以下语句,该语句将返回一个元组,分别包含数据框中的行数和列数:

df.shape

先知总是期望输入DataFrame中有两列:​​ds​​​和​​y​​​。该​​ds​​列表示SQL查询中的日期 。 要检查DataFrame中列的类型,可以在Python笔记本中运行以下语句:

df.dtypes

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

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

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

df.set_index('date')

这会将您的数据框的索引转换为DatetimeIndex,这使熊猫能够将此数据集解释为Time Series

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

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测_sql查询

 

 

 

Box-Cox变换

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

Box-Cox变换是一种数据变换,用于评估一组Lambda系数(λ)并选择可实现最佳正态性近似值的值。

from scipy.stats import boxcox ​

该​​boxcox​​​方法需要一个输入:要转换的一维正数据数组。您也可以选择指定要用于转换的λ值(例如,对数转换的λ= 0)。否则,该​​boxcox​​方法将找到使对数似然函数最大化的λ并将其作为第二个输出参数返回。

对于我们的示例,我们将让该​​boxcox​​方法确定用于变换的最佳λ,并将该值返回给名为lam的变量:

# Apply Box-Cox Transform to value column and assign to new column y
df['y'], lam = boxcox(df['value'])

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

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测_sql查询_02


 

预测

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

import fbprophet

将Prophet库导入笔记本后,我们可以从 Prophet对象(创建实例)开始:

m = fbprophet.Prophet()

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

predict
变量的新数据框,其中包含该列下未来日期的预测值

yhat
plot

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测_python_03


 

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

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测_sql查询_04


 

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

逆Box-Cox变换

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

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

拓端tecdat|用Prophet在Python编程代写中进行时间序列预测_python_05


 

 

标签:Box,转换,Python,Prophet,tecdat,df,Cox,数据
From: https://blog.51cto.com/u_14293657/5851093

相关文章

  • 拓端tecdat|python编程代写对NOAA天气数据格式转换
    转换NOAA天气数据文件“.fly”为PandasDataFrame 获取数据ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/dailyIn[1]:importmatplotlib.pyplotaspltimportpandas......
  • 拓端tecdat|R语言编程代写确定聚类的最佳簇数:3种聚类优化方法
     确定数据集中最佳的簇数是分区聚类(例如k均值聚类)中的一个基本问题,它要求用户指定要生成的簇数k。 一个简单且流行的解决方案包括检查使用分层聚类生成的树状图,以查看其......
  • 【python 时间】python处理时间
    当前时间#coding=utf-8importtimeimportdatetimelocaltime=time.localtime(time.time())print(localtime)#格式化时间now=datetime.datetime.now()print......
  • Python函数
    1.函数的定义1.函数代码用关键字def声明,后接函数标志性名称(参数)2.函数参数放置()中,可以有零个或多个3.return表达式结束函数4.匿名函数:lambda......
  • python传值以及深浅拷贝
    Python深拷贝和浅拷贝浅拷贝:指的是重新分配一块内存,创建一个新的对象,里面的元素是原对象里的各个子对象的引用。原来变量的内存不一样。深拷贝:指的是重新分配一块内......
  • python学习第六周总结
    封装封装:就是将数据和功能'封装'起来隐藏:在类的定义阶段名字前面使用两个下划线表示隐藏。就是将数据和功能隐藏起来不让用户直接调用,而是开发一些接口间接调用,从而可......
  • PYTHON_排序
    准备分模块积累,此模块为【递推】。编写程序,输入一个包含20个整数的列表,对其中偶数下标的元素进行降序排列,奇数下标的元素不变。输出排序后的列表。(提示:使用切片。)输入样......
  • python-装饰器
    装饰器:装饰器可以用来做什么?作用:可以在不修改功能函数内部代码的情况下,给功能函数进行扩展的新功能(对开放封闭原理)1.装饰器可以给当前的功能进行扩展......
  • 拓端数据tecdat|R语言基于温度对城市层次聚类、kmean聚类、主成分分析和Voronoi图可视
     为了说明层次聚类技术和k-均值,我使用了了城市温度数据集,其中包括几个城市的月平均气温。我们有15个城市,每月进行一次观测boxplot(temp[,1:12],main="月平均温度") 由于方......
  • 力扣278(java&python)-第一个错误的版本(简单)
    题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本......