NeuralForecast 多变量的处理 包括训练和推理

NeuralForecast 多变量的处理 包括训练和推理

flyfish
在这里插入图片描述

在这里插入图片描述

两个excel表格合并后的结果

      unique_id                  ds         y      ex_1      ex_2      ex_3      ex_4
0           HUFL 2016-07-01 00:00:00 -0.041413 -0.500000  0.166667 -0.500000 -0.001370
1           HUFL 2016-07-01 00:15:00 -0.185467 -0.500000  0.166667 -0.500000 -0.001370
2           HUFL 2016-07-01 00:30:00 -0.257495 -0.500000  0.166667 -0.500000 -0.001370
3           HUFL 2016-07-01 00:45:00 -0.577510 -0.500000  0.166667 -0.500000 -0.001370
4           HUFL 2016-07-01 01:00:00 -0.385501 -0.456522  0.166667 -0.500000 -0.001370
...          ...                 ...       ...       ...       ...       ...       ...
403195        OT 2018-02-20 22:45:00 -1.581325  0.456522 -0.333333  0.133333 -0.363014
403196        OT 2018-02-20 23:00:00 -1.581325  0.500000 -0.333333  0.133333 -0.363014
403197        OT 2018-02-20 23:15:00 -1.581325  0.500000 -0.333333  0.133333 -0.363014
403198        OT 2018-02-20 23:30:00 -1.562328  0.500000 -0.333333  0.133333 -0.363014
403199        OT 2018-02-20 23:45:00 -1.562328  0.500000 -0.333333  0.133333 -0.363014
import pandas as pdfrom datasetsforecast.long_horizon import LongHorizon
# Change this to your own data to try the model
Y_df, X_df, _ = LongHorizon.load(directory='./', group='ETTm2')
Y_df['ds'] = pd.to_datetime(Y_df['ds'])# X_df contains the exogenous features, which we add to Y_df
X_df['ds'] = pd.to_datetime(X_df['ds'])
Y_df = Y_df.merge(X_df, on=['unique_id', 'ds'], how='left')print(Y_df.head)
#exit()# We make validation and test splits
n_time = len(Y_df.ds.unique())
val_size = int(.2 * n_time)
test_size = int(.2 * n_time)
@dataclass
class LongHorizon:"""This Long-Horizon datasets wrapper class, provideswith utility to download and wrangle the following datasets:    ETT, ECL, Exchange, Traffic, ILI and Weather.- Each set is normalized with the train data mean and standard deviation.- Datasets are partitioned into train, validation and test splits.- For all datasets: 70%, 10%, and 20% of observations are train, validation, test, except ETT that uses 20% validation.  """source_url: str = 'https://nhits-experiments.s3.amazonaws.com/datasets.zip'@staticmethoddef load(directory: str,group: str,cache: bool = True) -> Tuple[pd.DataFrame, Optional[pd.DataFrame], Optional[pd.DataFrame]]:"""Downloads and long-horizon forecasting benchmark datasets.Parameters----------directory: strDirectory where data will be downloaded.group: strGroup name.Allowed groups: 'ETTh1', 'ETTh2', 'ETTm1', 'ETTm2','ECL', 'Exchange','Traffic', 'Weather', 'ILI'.cache: boolIf `True` saves and loads Returns------- y_df: pd.DataFrameTarget time series with columns ['unique_id', 'ds', 'y'].X_df: pd.DataFrameExogenous time series with columns ['unique_id', 'ds', 'y']. S_df: pd.DataFrameStatic exogenous variables with columns ['unique_id', 'ds']. and static variables. """if group not in LongHorizonInfo.groups:raise Exception(f'group not found {group}')path = f'{directory}/longhorizon/datasets'file_cache = f'{path}/{group}.p'if os.path.exists(file_cache) and cache:df, X_df, S_df = pd.read_pickle(file_cache)return df, X_df, S_dfLongHorizon.download(directory)path = f'{directory}/longhorizon/datasets'kind = 'M' if group not in ['ETTh1', 'ETTh2'] else 'S'name = LongHorizonInfo[group].namey_df = pd.read_csv(f'{path}/{name}/{kind}/df_y.csv')y_df = y_df.sort_values(['unique_id', 'ds'], ignore_index=True)y_df = y_df[['unique_id', 'ds', 'y']]X_df = pd.read_csv(f'{path}/{name}/{kind}/df_x.csv')X_df = y_df.drop('y', axis=1).merge(X_df, how='left', on=['ds'])S_df = Noneif cache:pd.to_pickle((y_df, X_df, S_df), file_cache)return y_df, X_df, S_df@staticmethoddef download(directory: str) -> None:"""Download ETT Dataset.Parameters----------directory: strDirectory path to download dataset."""path = f'{directory}/longhorizon/datasets/'if not os.path.exists(path):download_file(path, LongHorizon.source_url, decompress=True)

完整的训练保存模型文件

import pandas as pdfrom datasetsforecast.long_horizon import LongHorizon
# Change this to your own data to try the model
Y_df, X_df, _ = LongHorizon.load(directory='./', group='ETTm2')
Y_df['ds'] = pd.to_datetime(Y_df['ds'])# X_df contains the exogenous features, which we add to Y_df
X_df['ds'] = pd.to_datetime(X_df['ds'])
Y_df = Y_df.merge(X_df, on=['unique_id', 'ds'], how='left')print(Y_df.head)
#exit()# We make validation and test splits
n_time = len(Y_df.ds.unique())
val_size = int(.2 * n_time)
test_size = int(.2 * n_time)from neuralforecast.core import NeuralForecast
from neuralforecast.models import TSMixer, TSMixerx, NHITS, MLPMultivariate,VanillaTransformer
from neuralforecast.losses.pytorch import MSE, MAE
horizon = 12
input_size = 24
models = [VanillaTransformer(h=horizon,input_size=input_size,max_steps=1,val_check_steps=1,early_stop_patience_steps=1,scaler_type='identity',valid_loss=MAE(),random_seed=12345678,),  ]
nf = NeuralForecast(models=models,freq='15min')Y_hat_df = nf.cross_validation(df=Y_df,val_size=val_size,test_size=test_size,n_windows=None)                                 
Y_hat_df = Y_hat_df.reset_index()
nf.save(path='./checkpoints/test_run/',model_index=None, overwrite=True,save_dataset=True)

完整的推理代码

import pandas as pd
from neuralforecast.core import NeuralForecast
from neuralforecast.models import VanillaTransformer
from neuralforecast.losses.pytorch import MAE# 示例数据
data = {'unique_id': ['HUFL'] * 5,'ds': ['2016-07-01 00:00:00', '2016-07-01 00:15:00', '2016-07-01 00:30:00', '2016-07-01 00:45:00', '2016-07-01 01:00:00'],'y': [-0.041413, -0.185467, -0.257495, -0.577510, -0.385501],'ex_1': [-0.5, -0.5, -0.5, -0.5, -0.456522],'ex_2': [0.166667, 0.166667, 0.166667, 0.166667, 0.166667],'ex_3': [-0.5, -0.5, -0.5, -0.5, -0.5],'ex_4': [-0.001370, -0.001370, -0.001370, -0.001370, -0.001370]
}# 创建 DataFrame
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])# 使用 NeuralForecast 库进行预测
horizon = 12
input_size = 24models = [VanillaTransformer(h=horizon,input_size=input_size,max_steps=1,val_check_steps=1,early_stop_patience_steps=1,scaler_type='identity',valid_loss=MAE(),random_seed=12345678)
]# 加载已训练的模型
nf = NeuralForecast.load(path='./checkpoints/test_run/')
# 数据准备
Y_df = df[['unique_id', 'ds', 'y']]
X_df = df[['unique_id', 'ds', 'ex_1', 'ex_2', 'ex_3', 'ex_4']]# 合并数据集
Y_df = Y_df.merge(X_df, on=['unique_id', 'ds'], how='left')# 进行预测
predictions = nf.predict(Y_df)# 打印预测结果
print(predictions)

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

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

相关文章

Houdini pbd_constraints.h的文件位置

Houdini安装目录下的houdini\vex\include文件夹 C:\Program Files\Side Effects Software\Houdini 19.5.716\houdini\vex\include

17.调用游戏本身的hp减伤害函数实现秒杀游戏角色

上一个内容:16.在目标进程构建CALL执行代码 16.在目标进程构建CALL执行代码在它的代码上进行的更改,它的callData变量中的代码不完善一个完整的函数是由return的处理器执行到return会返回如果执行不到会继续往下走,直到执行不下去或者执行到…

Facebook开户 | Facebook海外三不限的价值

在当今数字化时代,海外数字营销已经成为企业推广和品牌建设的重要手段。在这个过程中,社交媒体平台扮演着至关重要的角色,而Facebook作为全球最大的社交媒体平台之一,其海外三不限账户近年来引起了越来越多数字营销从业者的关注。…

技术积累1:Java容错机制

如何优雅地重试 原创 赵九文 字节跳动技术团队 2021-01-05 10:01 背景 在微服务架构中,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的…

【话题】开源大模型与闭源带模型你更看好哪一方

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 引言评价AI模型“好不好”及“有没有发展”开源与闭源:两种发展路径的比较开源的优势与劣势闭源的优势与劣势 开源与闭源:你更看好哪一种&#x…

gitbook安装 报错处理 windows系统

首先需要有nodejs。若没有,则去nodejs官网下载nodejs安装。 然后安装gitbook。命令如下:这是在linux系统的命令。 $ npm config set registry http://registry.npm.taobao.org #设置一下淘宝镜像(非必选) $ npm install gitbo…

域环境信息收集

背景 一个具有一定规模的企业,每天都可能面临员工入职和离职,因此网络管理部门经常需要对域成员主机进行格式化消除磁的文件,然后重装系统及软件,以提供给新员工使用;因此,为了便于后期交接,大多网络管理员…

21、matlab生成脉冲序列:pulstran()函数

1、pulstran()函数 1)语法 语法1:y pulstran(t,d,func,fs) 基于连续函数的采样产生脉冲序列。 语法2:y pulstran(t,d,p) 生成一个脉冲序列,该脉冲序列是向量p中原型脉冲的多个延迟插值的总和。 语法3:y pulstran…

USB HOST DWC3 初始化

https://www.cnblogs.com/newjiang/p/15675746.html 如果dr_mode为device,则初始化gadget。 如果dr_mode为host,需要初始化xHCI驱动。在dwc3_host_init函数的最后调用platform_device_add(xhci)添加platform device(xhci-hcd)&a…

免费生物蛋白质的类chatgpt工具助手copilot:小分子、蛋白的折叠、对接等

参考: https://310.ai/copilot 可以通过自然语言对话形式实现小分子、蛋白质的相关处理:生成序列、折叠等 应该是agent技术调用不同工具实现 从UniProt数据库中搜索和加载蛋白质。使用ESM Fold方法折叠蛋白质。使用310.ai基础模型设计新蛋白质。使用TM-Align方法比较蛋白质…

算法每日一题(python,2024.05.26) day.8

题目来源(力扣. - 力扣(LeetCode),简单) 解题思路: 双指针+交换,使用left和right两个指针,right指针向右移动,left从数组首位开始,当right找到非…

Vue.js 动画与过渡效果实战

title: Vue.js 动画与过渡效果实战 date: 2024/6/4 updated: 2024/6/4 description: 这篇文章介绍了如何在网页设计中使用过渡动画和组件效果,以及如何利用模式和列表展示信息。还提到了使用钩子实现组件间通信的方法。 categories: 前端开发 tags: 过渡动画组件…

解决使用gets(getchar)函数无法输入字符(字符串)和scanf_s函数显示缺少“scanf_s”整型参数的问题

一.函数介绍 gets函数: 该函数就是读取字符串,遇到空格不会停止,直到遇到换行字符,但是也会读取最后的换行字符(这也就是我在写代码的时候遇到的一个问题) getchar函数: 和gets函数类似&#x…

C语言王国——字符函数和字符串函数(2)

目录 5 strtok函数 5.1 函数的表达式 5.2 函数模拟 6 strstr函数 6.1 函数表达式 7 strerror函数 7.1 函数表达式 7.2 例子 7.3 perror 8 strncpy、strncat、strncmp函数 四 结论 5 strtok函数 strtok函数我的理解是他是一个分割字符串的函数 5.1 函数的表达式 cha…

StartAI:AI扩图功能,让设计更高效

在数字设计领域,图像的清晰度和细节至关重要。StartAI作为领先的AI设计工具,不断推出创新功能,以满足设计师们对高质量图像处理的需求。最新推出的扩图功能,结合了“创成式填充”技术和“PS插件”的便捷,为设计师们带来…

深度神红网络——什么是 CNN(卷积神经网络)?

Facebook和Instagram自动检测图像中的面孔,Google通过上传照片搜索相似图片的功能,这些都是计算机视觉技术的实例,它们背后的核心技术是卷积神经网络(CNN)。那么,CNN究竟是什么呢?接下来&#x…

思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹

你们谁写代码会用流程图来做计划,或者写项目总结报告? .net带进度条复制文件夹 方案 列出所有子文件夹,再创建,复制文件 大文件可以单独做进度条 缺点:设计会更复杂 直接…

统一终端管理解决方案有哪些?必须收藏的统一终端管理软件

统一终端管理解决方案,是一种综合性的管理策略,旨在通过集中化的方式,对企业或组织的各种终端设备进行统一的管理、监控、保护和优化。以下是对统一终端管理解决方案的详细介绍。 一、方案概述 统一终端管理解决方案涵盖了从硬件到软件、从网…

[Linux系统编程]文件重定向dup和dup2

一.dup和dup2 实现重定向 1.文件描述符表 操作系统在管理文件时,会管理一张文件描述符表,根据打开的文件,分配一个文件描述符(int),根据该文件描述符,锁定指向该文件的指针,从而索取文件。 2.重定向 在li…

svg使用 element plus 使用外部下载的svg,使用或作为背景图片的使用方式,svg背景填充自适应父级宽高

friger.vue 注意:引入路径后加#svgView(preserveAspectRatio(none)),可解决宽高设置无效的问题 代码上就这两句就行,它去这个路径下去找@/assets/svgs/login-bg.svg,往这个目录下放svg文件就行<template><div class="parent-container"><el-row…