时序模型——如何用Python进行时序模型预测的baseline预测(简单规则)

时序模型——如何用Python进行时序模型预测的baseline预测(简单规则)

在对时间序列问题进行建模预测之前,通常可以通过一些简单的规则对结果进行提前的预测,可以作为baseline,供之后的模型进行参考。很多数据分析的比赛,都可以基于对于背景的理解和数据分析获得有用的规则,通过"if A then B"等方式设计出很好的基准方案。

​ 一般我们可以采取一些简单的统计量作为特征:

  • 中位数:较为稳健;
  • 均值:分布较符合正态分布时;

01.时间序列规则法(周预测)

在之前的时间序列ARIMA模型中,我们对于扫码量的周期性把握的不够明确,从而导致预测出的结果与实际数据存在一定的差异性。因此我们在总结上述的经验同时,对预测模型进行进一步的改进和数据分析。因此先以周为单位进行分析,选取的数据是从2021年10月25日之后的八周数据,数据如图1所示:
在这里插入图片描述

1.1 均值预测

(1)factors:初步的周期因子选为周一至周日的八周每天的平均值,并将得到的7个平均值取平均值,而周一至周日每天的均值除以7个均值的均值,得到初步的factors1如下:
在这里插入图片描述
(2)base:最后一周的平均值作为初步的base1,做预测时,只要将周期因子,乘以一个base,就可以做下一周的预测。预测结果如图2所示:
在这里插入图片描述
预测的结果与实际的第九周数据的效果图如图3所示:
在这里插入图片描述

1.2 均值与中位数的融合

将均值和中位数的数值如下表所示,由于周期因素的存在,用统一的均值来作为base预测工作日和周末的客流量可能会不太准确,为了优化base的选择,我们可以将销量去周期之后再取均值作为base。
直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。但是,我们不能直接对最后三天客流量取均值(最后三天是周末,这样取的base就偏大了)。需要去掉周期性因素后,再取平均。具体做法,就是用客流量除以周期因子。按照比例进行融合过程如下:
在这里插入图片描述
(1) 均值:中位数=1:9实现过程如下:
在这里插入图片描述
预测的结果与实际的第九周数据的效果图如图4所示:
在这里插入图片描述
(2) 均值:中位数=2:8,实现过程如下:
在这里插入图片描述
预测的结果与实际的第九周数据的效果图如图5所示:
在这里插入图片描述
(3) 均值:中位数=3:7,具体实现过程如下:
在这里插入图片描述
预测的结果与实际的第九周数据的效果图如图6所示:
在这里插入图片描述

其他情况以此类推得到预测数据。

1.3 总结

综上所述:平均值和中位数之比为9:1时,预测的效果最佳,且误差最小,剩余的其他比例算出来的意义也不大。但是这样预测效率较低,不能得到未来一个月的预测结果,只能进行滚动循环得到未来一个月的预测结果。因此为了使得算法的效率更加高,我们以月为周期进行预测。具体实现过程如下,并用代码实现落地。

02. 时间序列规则法(非自然月预测)

本次算法选取的训练数据为2021年10月1日至2022年3月1日五个月的数据,以月为周期进行预测的步骤如图7所示:
在这里插入图片描述

2.1 统计每日为(周1-周7)的频次

代码实现时,通过定义了add_timestamp()和get_total_balance()函数去将时间数据进行割分,从而得到每日为(周1-周7)的频次。得到该频次的目的是将星期中的周期性放入每日中,从而使得之后得到的因子更加准确。得到的部分频次表如图8所示:
在这里插入图片描述

2.2 获得加权因子

基于时间序列中按周预测时得到的最佳的因子factors,进而去计算出每日的加权因子。加权因子的具体计算过程为:频次*星期周期因子除以频次的总数。得到的部分结果如图9所示:
在这里插入图片描述

2.3 通过非自然月的上个月预测下一个月(本次用2月预测3月)

由于2021年的2月只有28天,因此以2月为基数进行预测3月,三月得到的结果也是28天的。为了解决这一问题,我们将所有的月份按照30天进行预测,由2月的数据预测出的3月份的结果与真实数据效果图如图10所示:
在这里插入图片描述

由非自然月的3月预测4月份的结果和真实的4月数据的效果图如图11所示:
在这里插入图片描述

2.4 总结

以月为周期进行预测,预测数据和真实数据的走势大体相同,但是数据具有一定的滞后性,以及预测的结果和真实数据也具有一定的差距,后续需要对滞后性及其数据的准确性进行进一步的改进,但也要避免过拟合。

模型落地代码实现如需要,后台私信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内一些大公司的开源项目

http://www.open-open.com/lib/view/open1377700292339.html 阿里 阿里的开源项目很多,这也跟淘宝正明的开源态度密不可分。有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件,例如 MetaQ(分布式消息系统)、dubbo(RP…

简单关联规则算法例题-9个顾客的编号为(T1,T2,T3,T4,T5,T6,T7,T8,T9),每一个顾客购买的商品记录{{I1,I2,I5}...},并使用python实现简单关联规则

题目: 简单关联规则算法例题-9个顾客的编号为(T1,T2,T3,T4,T5,T6,T7,T8,T9),每一个顾客购买的商品记录{{I1,I2,I5},{I2,I4},{I2,I3},{I1,I2,I4},{I1,I3},{I2,I3},{I1,I3},{I1,I2,I3,I5},{I1,I2,I3}},求频繁项集;并用py…

ASP.NET AJAX (Atlas) 拖放(Drag Drop)功能6种实现方法总结

在Ajax程序中实现传统桌面程序中异常简单的拖放功能却并不是件容易的事情。然而Web上的拖放功能又如此的让人痴迷,所以几乎每个成熟的Ajax类库都提供了自己的一套实现拖放的封装,ASP.NET AJAX (Atlas) 自然也不例外。本文将总结并简要分析ASP.NET AJAX (…

python实现决策树-数据集如下图所示,根据我们对决策树的理解,设计一棵决策树,并输入{Age:36,Salary:H,STU:No,Credit:OK} 测试数据,是否与预期结果一致?

题目:数据集如下图所示,根据我们对决策树的理解,设计一棵决策树,并输入{Age:36,Salary:H,STU:No,Credit:OK} 测试数据,是否与预期结果一致?注意,不允许直接调用Sklearn提供的决策树方法 决策树算…

047 一维数据的格式化和处理

目录 一、概述二、数据组织的维度2.1 从一个数据到一组数据2.2 维度:一组数据的组织形式2.3 一维数据2.4 二维数据2.5 多维数据2.6 高维数据2.7 数据的操作周期三、一维数据的表示3.1 如果数据间有序:使用列表类型3.2 如果数据间无序:使用集合…

Python 将字典(dict)转换为DataFrame

Python 将字典(dict)转换为DataFrame 1.将字典转换为 Pandas DataFame 的方法 Pandas 的 DataFrame 构造函数pd.DataFrame()如果将字典的 items 作为构造函数的参数而不是字典本身,则将字典转换为 dataframe。 import pandas as pdfruit_dict {3: apple,2: banan…

jupyter中中文显示不正常_jupyter画图中文显示乱码问题解决办法

问题:为什么Jumpy中运行图片无法正常显示中文字体? 在使用jumpy运行可视化代码时,发现图片无法正常显示中文符号,在尝试网上诸多方法后,发现只需加一行代码即可解决 解决方法: 可以查看一下代码中是否存…

如何合理的定义用户流失——流失多少天算流失

关于流失用户,我们首先想到的是选择怎样的时间跨度才能准确定义玩家为一个流失用户。通常在游戏中,会有对流失玩家召回活动,假如流失玩家的流失期限定义太短,比如3天未登录游戏,即算流失;这样虽然能够覆盖更…

ng-bootstrap 组件集中 tabset 组件的实现分析

ng-bootstrap: tabset 本文介绍了 ng-bootstrap 项目中&#xff0c;tabset 的实现分析。 使用方式 <ngb-tabset> 作为容器元素&#xff0c;其中的每个页签以一个 <ngb-tab> 元素定义&#xff0c;在 <ngb-tabset> 中包含若干个 <ngb-tab> 子元素。 在 &…

如何使jupyter notebook自动补全代码和生成不同级别的标题

在我们使用jupyter notenook去编写程序时&#xff0c;在这个交互式的笔记本上使用python语言去进行数据分析&#xff0c;十分方便。但当分析的内容有点多时&#xff0c;我们能清楚的看清该步内容处于第几级目录下&#xff0c;使分析的逻辑清晰明了。因此接下来&#xff0c;我们…

K近邻法(KNN)原理小结

K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了&#xff0c;在我们平常的生活中也会不自主的应用。比如&#xff0c;我们判断一个人的人品&#xff0c;只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用了KNN的思想。KNN方法既可以做分类&…

SQL语法大全,快码住收藏!!!

基础 1、创建数据库&#xff1a;CREATE DATABASE database-name 2、删除数据库&#xff1a;drop database dbname 3、备份&#xff1a;sql server— 创建 备份数据的 device USE master EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’— 开…

python 解决print数组/矩阵无法完整输出的问题

问题描述&#xff1a; 当数组/矩阵过大则只会显示其中一部分&#xff0c;中间则会自动用省略号代替&#xff0c;而我们想要去查看数组/矩阵的具体内容时&#xff0c;则需要将省略号代替的部分展示出来&#xff1a; 解决方法&#xff1a; 直接在import numpy 加上下面一句代码即…

SpringBoot学习笔记2

九&#xff1a;创建父工程 注意&#xff1a;打包方式选择为pom 将创建SpringBoot常用的依赖和插件放在父工程的pom.xml,如下&#xff1a; 1 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" …

Windows下更改默认的python环境

Windows下更改默认的python环境1.查找python所在的路径2.高级系统设置3.编辑path变量1.查找python所在的路径 打开电脑中的cmd&#xff0c;输入where python&#xff0c;得到电脑中所有python环境的路径 2.高级系统设置 此电脑——>属性——>高级系统设置——>环境…

杭电2051

此题思路参照杭电2031&#xff0c;相比之下此题更简单了&#xff01;呵呵&#xff01;&#xff08;知道注意求几进制就用10进制数除以几把所求的余数存到一个数组里就行了&#xff01;同时也要记下整除后的结果&#xff0c;用整除后的结果接着求余&#xff01;&#xff01; 直到…

SilverLight Test

一个示例程序,来自 http://silverlight.live.com/ 转载于:https://www.cnblogs.com/Glen/archive/2007/08/21/863763.html

浅谈数据库三大范式的理解

首先声明一下&#xff0c;我的这个回答是个人工作总结&#xff0c;不适合考试答题昂。 欢迎关注我的博客。 前言&#xff1a;数据库设计其实不仅仅限制于三个范式&#xff0c;往下其实还有很多种&#xff0c;但对于大多数人来说&#xff0c;你又不搞科研&#xff0c;不造飞机大…

理解Silverlight的路径填充规则

这个可以扩展到矢量图中路径的填充规则&#xff0c;因为所有矢量图都采用这个规则来填充封闭路径的内部&#xff0c;在这里只以Silverlight为例。 在网上找了很久关于填充规则的介绍&#xff0c;经过了几天的阅读和自己理解还有亲自尝试&#xff0c;现在终于能说出过所以然来了…

PowerDesigner

PowerDesigner简介   PowerDesigner是Sybase公司的CASE工具集&#xff0c;使用它可以方便地对管理信息系统进行分析设计&#xff0c;它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型&#xff0c;可以生成多种客户端开…