工具系列:TimeGPT_(3)处理假期和特殊日期

news2025/6/16 21:06:23

日历变量和特殊日期是预测应用中最常见的外生变量类型之一。它们为时间序列的当前状态提供了额外的上下文信息,特别是对于基于窗口的模型(如TimeGPT-1)而言。这些变量通常包括添加每个观测的月份、周数、日期或小时数的信息。例如,在高频小时数据中,提供年份的当前月份比输入窗口中有限的历史信息更有意义,可以改善预测结果。

在本教程中,我们将展示如何使用date_features函数自动向数据集中添加日历变量。

from nixtlats.utils import colab_badge


colab_badge('docs/tutorials/2_holidays')
# 导入load_dotenv函数,用于加载.env文件中的环境变量
from fastcore.test import test_eq, test_fail, test_warns
from dotenv import load_dotenv
load_dotenv()
True

import pandas as pd
from nixtlats import TimeGPT

/home/ubuntu/miniconda/envs/nixtlats/lib/python3.11/site-packages/statsforecast/core.py:25: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from tqdm.autonotebook import tqdm
# 创建一个TimeGPT对象,传入token参数,如果没有传入则默认使用环境变量中的TIMEGPT_TOKEN
timegpt = TimeGPT(token='my_token_provided_by_nixtla')
# 创建一个TimeGPT对象
timegpt = TimeGPT()

鉴于日历变量的主导使用,我们将常见日历变量的自动创建作为预处理步骤包含在预测方法中。要自动添加日历变量,请使用“date_features”参数。

# 从指定的URL读取CSV文件,并将其存储在名为pltr_df的数据框中
pltr_df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/openbb/pltr.csv')
# 导入所需的模块和函数已在代码中完成,无需再次导入

# 使用timegpt模块的forecast函数进行时间序列预测,并将结果赋值给fcst_pltr_calendar_df变量
# 参数说明:
# - df:传入的数据框,这里使用pltr_df的最后28个数据作为输入数据
# - h:预测的时间步长,这里预测未来14个时间步
# - freq:时间序列的频率,这里使用工作日频率(Business Day)
# - time_col:时间列的名称,这里使用'date'作为时间列
# - target_col:目标列的名称,这里使用'Close'作为目标列
# - date_features:需要使用的日期特征,这里使用'month'和'weekday'作为日期特征
fcst_pltr_calendar_df = timegpt.forecast(
    df=pltr_df.tail(2 * 14), h=14, freq='B',
    time_col='date', target_col='Close',
    date_features=['month','weekday']
)

# 输出预测结果的前几行
fcst_pltr_calendar_df.head()
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
WARNING:nixtlats.timegpt:The specified horizon "h" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
dateTimeGPT
02023-09-2514.677374
12023-09-2614.825757
22023-09-2715.126798
32023-09-2814.398899
42023-09-2914.387407
# 导入timegpt模块中的plot函数

# 使用plot函数绘制图表,传入以下参数:
# - pltr_df: 数据框,包含要绘制的数据
# - fcst_pltr_calendar_df: 数据框,包含要绘制的预测数据
# - id_col: 字符串,指定数据框中表示系列ID的列名
# - time_col: 字符串,指定数据框中表示时间的列名
# - target_col: 字符串,指定数据框中表示目标变量的列名
# - max_insample_length: 整数,指定用于训练模型的最大样本数量
timegpt.plot(
    pltr_df, 
    fcst_pltr_calendar_df, 
    id_col='series_id',
    time_col='date',
    target_col='Close',
    max_insample_length=90,
)

我们还可以绘制每个日期特征的重要性。

timegpt.weights_x.plot.barh(x='features', y='weights', figsize=(10, 10))
<Axes: ylabel='features'>

您还可以使用CountryHolidays类添加国家假日。

# 导入nixtlats.date_features模块中的CountryHolidays类

from nixtlats.date_features import CountryHolidays
# 导入所需模块和函数

# 使用timegpt.forecast函数进行时间序列预测,将预测结果保存在fcst_pltr_calendar_df中
# 参数df为输入的数据框pltr_df,h为预测的时间步数14,freq为频率为工作日'B',time_col为时间列'date',target_col为目标列'Close',date_features为日期特征,这里使用了CountryHolidays函数来指定美国的假日
fcst_pltr_calendar_df = timegpt.forecast(
    df=pltr_df, h=14, freq='B',
    time_col='date', target_col='Close',
    date_features=[CountryHolidays(['US'])]
)

# 使用timegpt.weights_x.plot.barh函数绘制水平条形图,x轴为特征'features',y轴为权重'weights',图像大小为(10, 10)
timegpt.weights_x.plot.barh(x='features', y='weights', figsize=(10, 10))
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
WARNING:nixtlats.timegpt:The specified horizon "h" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.
INFO:nixtlats.timegpt:Calling Forecast Endpoint...





<Axes: ylabel='features'>

以下是date_features参数的详细说明:

  • date_features(bool或str列表或可调用对象):此参数指定要考虑的日期属性。

    • 如果设置为True,模型将自动添加与给定数据框(df)的频率相关的最常见日期特征。对于每日频率,这可能包括星期几、月份和年份等特征。
    • 如果提供了一个字符串列表,它将考虑那些特定的日期属性。例如,date_features=['weekday', 'month']将只添加星期几和月份作为特征。
    • 如果提供了一个可调用对象,它应该是一个以日期为输入并返回所需特征的函数。这样可以灵活地计算自定义日期特征。
  • date_features_to_one_hot(bool或str列表):确定日期特征后,可能希望对其进行独热编码,特别是如果它们是分类的(例如星期几)。独热编码将这些分类特征转换为二进制矩阵,使它们更适合许多机器学习算法。

    • 如果date_features=True,则默认情况下,所有计算得到的日期特征将进行独热编码。
    • 如果提供了一个字符串列表,只有那些特定的日期特征将进行独热编码。

通过利用date_featuresdate_features_to_one_hot参数,可以有效地将日期属性的时间效应纳入到预测模型中,从而提高其准确性和可解释性。

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

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

相关文章

创建一台可以安装linux系统的虚拟机的流程

1、打开vmware-->点击左上角文件-->新建虚拟机-->自定义 2、默认选择&#xff0c;直接下一步 3、选中稍后安装操作系统&#xff0c;然后下一步 4、选中Linux&#xff0c;然后下拉框选择CentOS7(64位) 5、设置虚拟机名称及存储位置 6、设置虚拟机处理器数量及核心数 7、…

记录汇川:MODBUS TCP-梯形图

H5U的MODBUS通信不需要编写程序&#xff0c;通过组态MODBUS通信配置表&#xff0c;实现数据通信。 Modbus-TCP 主站即Modbus-TCP客户端&#xff0c;通过Modbus-TCP配置&#xff0c;可最多支持同时与31个 Modbus-TCP服务器&#xff08;从站&#xff09;进行通讯。 …

【JavaScript】闭包机制

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

我的数据仓库与数据挖掘期末大作业重置版

文章目录 我的数据仓库与数据挖掘期末大作业重置版准备工作预设定及导入相对应的库库的导入调整 Jupyter Notebook 的预设定调整 MatPlotLib 和 Pandas 的输出设置 任务 1&#xff1a;预测问题数据的保存和读取数据的分析和预处理模型的选择和构建线性回归一元多项式回归 拟合预…

sql_lab之sqli中的堆叠型注入(less-38)

堆叠注入&#xff08;less-38&#xff09; 1.判断注入类型 http://127.0.0.3/less-38/?id1 and 12 -- s 没有回显 http://127.0.0.3/less-38/?id1 and 11 -- s 有回显 则说明是单字节’注入 2.查询字段数 http://127.0.0.3/less-38/?id1 order by 4 -- s 报错 http:/…

ResNet网络分析与demo实例

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 ResNet 详解 原论文地址 [1512.03385] Deep Residual Learning for Image Recognition (arxiv.org) ResNet 网络是在 …

短视频矩阵系统:赋予用户创造与分享的力量

在如今快节奏的社交网络时代&#xff0c;人们对于信息获取和娱乐方式的需求也逐渐发生了变化。作为当下最受欢迎的短视频平台之一&#xff0c;抖音短视频矩阵系统正以其独特的魅力和吸引力&#xff0c;深深地打动着亿万用户。 抖音短视频矩阵系统是一种基于移动端的短视频分享…

基于STC89C52RC的温湿度显示与按键可调的时钟显示

大学时候的课程设计项目&#xff0c;本人只负责软件设计。 课题摘要 摘 要 温湿度参数的检测已经成为人们日常生产生活中的一个重要的参数指标。温度和湿度是两个最基本的环境参数&#xff0c;人们生活与温湿度息息相关。在工农业生产、环保、科研、化工业、制药业等地方&…

客户跟进没效果?这三招请收好!!

在现代商业环境中&#xff0c;与客户进行有效的跟进至关重要。但是&#xff0c;有时候不论我们多么努力地跟进&#xff0c;却依然无法获得预期的结果。 今天就给大家分享三个高效跟进客户的方法&#xff0c;帮助大家提高效率&#xff01; 首先&#xff0c;了解客户需求是关键…

【MySQL变更】gh-ost原理解读

gh-ost简介 gh-ost是处理MySQL在线表结构变更的工具&#xff0c;与pt-osc 不同&#xff0c;gh-ost不会使用触发器。 gh-ost 可以进行测试&#xff0c;暂停&#xff0c;动态控制和重新配置&#xff0c;审计还有其他许多操作perks。 命名 最初它被命名为gh-osc&#xff1a;Git…

从入门到精通,30天带你学会C++【第九天:排序合集】

Everyday English Never put off what you can do until tomorrow. 今日事&#xff0c;今日毕。 前言 首先跟大家说声抱歉&#xff0c;我已经25天没写博客了&#xff0c;我知道我掉了很多粉丝&#xff0c;但是还有很多人坚持关注着我&#xff0c;在这里我表示感谢…

C++ Qt开发:QSqlDatabase数据库组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QSqlDatabase数据库模块的常用方法及灵活运用…

【软件工程大题】白盒测试

给出一个简单的测试样例,然后再进行白盒测试的讲解 if A and B then action1 if C or D then action2 1.语句覆盖 每个语句执行一次 也就是,样例中的每个语句执行一次,至于ABCD取值,要满足IF条件,让四个语句都执行一次 A and B -> T ⇒ AT …

蓝桥杯的学习规划

c语言基础&#xff1a; Python语言基础 学习路径&#xff1a;画框的要着重学习

2023年教程汇总 | 《小杜的生信笔记》

2023年总结 2023年即将结束&#xff0c;我们即将迎来2024年。2023年&#xff0c;我们做了什么呢&#xff1f;&#xff1f;这个是个值得深思的问题…? 12月份是个快乐且痛苦时间节点。前一段时间&#xff0c;单位需要提交2023年工作总结&#xff0c;真的是憋了好久才可以下笔…

【数据结构】无向图的最小生成树(Prime,Kruskal算法)

文章目录 前言一、最小生成树二、Kruskal算法1.方法&#xff1a;2.判断是否成环3.代码实现 三、 Prim算法1.方法&#xff1a;2.代码 四、源码 前言 连通图&#xff1a;在无向图中&#xff0c;若从顶点v1到顶点v2有路径&#xff0c;则称顶点v1与顶点v2是连通的。如果图中任意一对…

医院信息化-6 大模型与医疗

之前写了一系列跟医疗信息化相关的内容&#xff0c;其中有提到人工智能&#xff0c;但是写的都是原先的一些AI算法基础上的医疗应用。现在大模型出现的涌现推理能力确实让人惊讶&#xff0c;并且出现可商用化的可能性&#xff0c;因此最近一年关于大模型在医疗的应用也开始出现…

ComfyUI如何中文汉化

comfyui中文地址如下&#xff1a; https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translationhttps://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation如何安装&#xff1f; 1. git安装 进入项目目录下的custom_nodes目录下&#xff0c;然后进入控制台&#xff0c;运…

Java——基本数据类型

Java基本数据类型 一、 整型1. byte2. short3. int4. long 二、浮点型1. float2. double 三、 字符型(char)四、 布尔型&#xff08;boolean&#xff09; 总结 算下刚转Java到现在也有三个多月了&#xff0c;所以打算对Java的知识进行汇总一下&#xff0c;本篇文章介绍一下Java…

Linux之用户/组 管理

关机&重启命令 shutdown -h now立刻进行关机shutdown -h 11分钟后关机&#xff08;shutdown默认等于shutdown -h 1) -h即halt shutdown -r now现在重新启动计算机 -r即reboot halt关机reboot重新启动计算机sync把内存数据同步到磁盘 再进行shutdown/reboot/halt命令在执行…