Informer辅助笔记:data/dataloader.py

2023-12-01 14:52

本文主要是介绍Informer辅助笔记:data/dataloader.py,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以WTH为例

import os
import numpy as np
import pandas as pdimport torch
from torch.utils.data import Dataset, DataLoader
# from sklearn.preprocessing import StandardScalerfrom utils.tools import StandardScaler
from utils.timefeatures import time_featuresimport warnings
warnings.filterwarnings('ignore')

1 WTH

1.1 数据

1.2 Dataset_Custom

1.2.1 __init__

class Dataset_Custom(Dataset):def __init__(self, root_path, flag='train', size=None, features='S', data_path='ETTh1.csv', target='OT', scale=True, inverse=False, timeenc=0, freq='h', cols=None):# size [seq_len, label_len, pred_len]# infoif size == None:self.seq_len = 24*4*4self.label_len = 24*4self.pred_len = 24*4else:self.seq_len = size[0]self.label_len = size[1]self.pred_len = size[2]#设置seq_len,label_len和pred_len# initassert flag in ['train', 'test', 'val']type_map = {'train':0, 'val':1, 'test':2}self.set_type = type_map[flag]self.features = featuresself.target = targetself.scale = scaleself.inverse = inverseself.timeenc = timeencself.freq = freqself.cols=colsself.root_path = root_pathself.data_path = data_pathself.__read_data__()

1.2.2 __read_data__

def __read_data__(self):self.scaler = StandardScaler()df_raw = pd.read_csv(os.path.join(self.root_path,self.data_path))if self.cols:cols=self.cols.copy()cols.remove(self.target)else:cols = list(df_raw.columns); cols.remove(self.target); cols.remove('date')df_raw = df_raw[['date']+cols+[self.target]]#数据被重新组织,使得日期列在前,然后是其他特征列,最后是目标特征列。#对于Weather,只有target=WetBulbCelsius和date,没有colsnum_train = int(len(df_raw)*0.7)num_test = int(len(df_raw)*0.2)num_vali = len(df_raw) - num_train - num_test#数据集被划分为70%训练集、20%测试集和剩余的作为验证集。border1s = [0, num_train-self.seq_len, len(df_raw)-num_test-self.seq_len]border2s = [num_train, num_train+num_vali, len(df_raw)]border1 = border1s[self.set_type]border2 = border2s[self.set_type]#根据是train还是test还是vali,计算这些集合的边界,即数据中的索引位置。if self.features=='M' or self.features=='MS':cols_data = df_raw.columns[1:]df_data = df_raw[cols_data]elif self.features=='S':df_data = df_raw[[self.target]]'''根据self.features的值选择特征。如果是'M'或'MS',选择除日期外的所有特征; [多变量预测多变量,多变量预测单变量]如果是'S',只选择目标特征。 [S:单变量预测单变量]'''if self.scale:train_data = df_data[border1s[0]:border2s[0]]self.scaler.fit(train_data.values)data = self.scaler.transform(df_data.values)else:data = df_data.valuesdf_stamp = df_raw[['date']][border1:border2]df_stamp['date'] = pd.to_datetime(df_stamp.date)data_stamp = time_features(df_stamp, timeenc=self.timeenc, freq=self.freq)'''从数据中提取时间戳,并转换成pandas的datetime对象。使用time_features函数来提取时间相关的特征。'''self.data_x = data[border1:border2]if self.inverse:self.data_y = df_data.values[border1:border2]else:self.data_y = data[border1:border2]self.data_stamp = data_stamp'''self.data_x: 用于模型训练的特征数据。self.data_y: 目标数据,如果self.inverse为真,则使用原始数据,否则使用标准化后的数据。(和data_x一样)self.data_stamp: 时间特征数据。'''

1.2.3 其他

'''
获取数据集的一个样本,其中index是样本的索引seq_x,seq_y:特征序列,目标序列
seq_x_mark,seq_y_mark:相对应的时间特征序列
'''def __getitem__(self, index):s_begin = indexs_end = s_begin + self.seq_lenr_begin = s_end - self.label_len r_end = r_begin + self.label_len + self.pred_lenseq_x = self.data_x[s_begin:s_end]if self.inverse:seq_y = np.concatenate([self.data_x[r_begin:r_begin+self.label_len], self.data_y[r_begin+self.label_len:r_end]], 0)else:seq_y = self.data_y[r_begin:r_end]seq_x_mark = self.data_stamp[s_begin:s_end]seq_y_mark = self.data_stamp[r_begin:r_end]return seq_x, seq_y, seq_x_mark, seq_y_mark'''
返回数据集中样本的总数
'''    def __len__(self):return len(self.data_x) - self.seq_len- self.pred_len + 1def inverse_transform(self, data):return self.scaler.inverse_transform(data)

这篇关于Informer辅助笔记:data/dataloader.py的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441589

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi