首页 > 其他分享 >非每日数据

非每日数据

时间:2023-06-13 09:34:07浏览次数:40  
标签:plot Python Prophet 每日 fcst future 数据

子日数据

Prophet可以通过在ds列中传递带有时间戳的数据框来预测时间序列。时间戳的格式应该是YYYY-MM-DD HH: MM:SS-请参阅此处的示例csv。当使用子日数据时,每日季节性将自动匹配。这里我们将Prophet拟合为5分钟分辨率的数据(约塞米蒂的每日温度):

# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_yosemite_temps.csv')
m = Prophet(changepoint_prior_scale=0.01).fit(df)
future = m.make_future_dataframe(periods=300, freq='H')
fcst = m.predict(future)
fig = m.plot(fcst)

image
每日季节性将显示在组件图中:

# Python
fig = m.plot_components(fcst)

image

经常有缺口的数据

# Python
df2 = df.copy()
df2['ds'] = pd.to_datetime(df2['ds'])
df2 = df2[df2['ds'].dt.hour < 6]
m = Prophet().fit(df2)
future = m.make_future_dataframe(periods=300, freq='H')
fcst = m.predict(future)
fig = m.plot(fcst)

image
预测似乎相当糟糕,未来的波动比历史上看到的要大得多。这里的问题是,我们将每日周期与只有一天中部分时间(12a到6a)的数据的时间序列相匹配。因此,在一天的剩余时间里,每日季节性不受约束,也没有得到很好的估计。解决方案是只对有历史数据的时间窗口进行预测。在这里,这意味着将未来的数据帧限制在12a到6a之间:

# Python
future2 = future.copy()
future2 = future2[future2['ds'].dt.hour < 6]
fcst = m.predict(future2)
fig = m.plot(fcst)

image
同样的原则也适用于数据中有规律缺口的其他数据集。例如,如果历史仅包含工作日,则应仅对工作日进行预测,因为周末的每周季节性无法很好地估计。

月度数据

您可以使用Prophet来拟合月度数据。但是,底层模型是连续时间的,这意味着如果您将模型拟合到月度数据,然后要求提供每日预测,您可能会得到奇怪的结果。在这里,我们预测了未来10年的美国零售额:

# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_retail_sales.csv')
m = Prophet(seasonality_mode='multiplicative').fit(df)
future = m.make_future_dataframe(periods=3652)
fcst = m.predict(future)
fig = m.plot(fcst)

image
这与上面的问题相同,数据集有规律的差距。当我们拟合年度季节性时,它只有每个月第一天的数据,其余日子的季节性组件无法识别和过度拟合。这可以通过做MCMC来查看季节性中的不确定性来清楚地看到:

# Python
m = Prophet(seasonality_mode='multiplicative', mcmc_samples=300).fit(df, show_progress=False)
fcst = m.predict(future)
fig = m.plot_components(fcst)

WARNING:pystan:481 of 600 iterations saturated the maximum tree depth of 10 (80.2 %)
WARNING:pystan:Run again with max_treedepth larger than 10 to avoid saturation

image
季节性在每个月初有数据点的地方不确定性很低,但在两者之间有非常高的后验方差。当将Prophet拟合到月度数据时,只进行月度预测,这可以通过将频率传递到make_future_dataframe来完成:

# Python
future = m.make_future_dataframe(periods=120, freq='MS')
fcst = m.predict(future)
fig = m.plot(fcst)

image
在Python中,频率可以是这里的pandas字符串列表中的任何内容:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases。 请注意,这里使用的MS是月开始,这意味着数据点放置在每个月的开始。
在月度数据中,年度季节性也可以用二元额外回归来建模。特别是,该模型可以使用12个额外回归,如is_jan、is_feb等。如果日期在1月,is_jan为1,否则为0。这种方法将避免上面看到的月内不可识别性。如果添加了每月额外回归,请务必使用yearly_seasonality=False。

假期聚合数据

假期效果应用于指定假期的特定日期。对于已聚合到每周或每月频率的数据,不属于数据中使用的特定日期的假期将被忽略:例如,每周时间序列中的周一假期,其中每个数据点都在周日。要在模型中包含假期效果,需要将假期移动到历史数据框中所需效果的日期。请注意,对于每周或每月聚合数据,许多假期效果将被年度季节性很好地捕获,因此添加假期可能只需要用于在整个时间序列中不同周发生的假期。

标签:plot,Python,Prophet,每日,fcst,future,数据
From: https://www.cnblogs.com/wt11/p/17476601.html

相关文章

  • Hibernate数据校验简介
    Hibernate数据校验简介我们在业务中经常会遇到参数校验问题,比如前端参数校验、Kafka消息参数校验等,如果业务逻辑比较复杂,各种实体比较多的时候,我们通过代码对这些数据一一校验,会出现大量的重复代码以及和主要业务无关的逻辑。SpringMVC提供了参数校验机制,但是其底层还是通过Hib......
  • 2023.6.12 03.数据库基本操作
    1.数据库连接⽅式2.SQL语⾔3.Mysql数据库对应与应⽤4.数据库基本操作5.数据库增删查改6.数据库查询语句6.1单表查询6.2多表查询6.3⼦查询 系统数据库information_schema(虚拟库)⽤户表信息、列信息、权限信息、字符信息等#查询有多少个库mysql>SELECTCOUNT(*)......
  • CoaXpress downlink数据解析方法
    什么是downlink数据downlink指的是相机传输到host采集卡的高速链路,其中包含了如下类型的数据:1、StreamData2、TriggerAck,Trigger;3、Ack(replydata);4、Event,Heartbeatdownlinkpacket数据类型和uplink的低速数据一样,都使用packet的方式进行传输,以packet作为最小......
  • 小灰灰深度学习day9——多线程读取小批量数据(这里运行的时候报错了,目前还不会解决,
    在这里先把代码放上来importtorchimporttimeimportnumpyasnpimporttorchvisionfromtorch.utilsimportdatafromtorchvisionimporttransformsfromd2limporttorchasd2ld2l.use_svg_display()#利用svg显示图片importosos.environ["KMP_DUPLICATE_LIB_OK......
  • 虚拟化与大数据的报错问题收录
    摘要:此文记录的是作者在学习过程中遇到的问题及解决方法,会不断更新,有些问题还未得到解决,仅供参考。如果其中问题各位有解决思路或者出现过类似情况欢迎在评论中分享,也算帮作者一把,若是出现其他问题的也可在评论留言,共同讨论,感谢各位。虚拟化技术rabbitmq无法启动的问题目前只针......
  • centos7 虚拟机安装 MySQL数据库
    检查是否安装过MySQL以及版本信息rpm-qa|grep-imysql卸载之前的版本,参数-e表示删除,-nodeps表示不校验依赖关系rpm-emysql-5.1.47-4.el6.x86_64–nodeps二进制包格式安装的mysql卸载如果我们的mysql是通过二级制包格式安装的,则rpm-qa|grep-imysql是......
  • 【每日一题】Problem 44E. Anfisa the Monkey
    原题解决思路由题意可得\(ak\lesize\lebk\),因此当条件不符合该要求时即可退出因为\(size\lebk\),因此,我们可以假设每行都是\(b\)长度来满足条件二,因此第\(i\)行的长度为\(len=size-(k-i)b\),然后对\(len\)取与\(a\)中的较大者来满足条件一注意,如果后续行每......
  • 解压gzip数据流 和 file_get_contents()函数支持SSL错误和header
    file_get_contents()函数的相关参数,支持SSL错误和header $options=array("ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false,), "http"=>array('timeout......
  • 达梦数据库最新版安装过程
    达梦数据库最新版安装过程背景好久不用达梦数据库了.都是用的两年前安装好的数据库一直在跑(比较稳定,没太宕机)今天有一个新的机器,里面的达梦数据库版本实在是太低了.想着升级一下版本.本地删除重新搭建.但是没想到,两年没用全都忘记了.之前记录的文档也是各种零散.......
  • 数据存储的两种方式:cookie和webStorage存储
    一、sessionstorage(会话存储)1、添加数据:SessionStorage.setItem('key','value');该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。2、获取数据:SessionStorage.getItem('key');该方法接受一个键名作为参数,返回键名对应的值。如果获取不到......