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)

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

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

相关文章

vuepress-----6、时间更新

# 6、时间更新 基于Git提交时间修改文字时间格式 moment # 最后更新时间 # 时间格式修改 下载库文件 yarn add momentconst moment require(moment); moment.locale(zh-cn)module.exports {themeConfig: {lastUpdated: 更新时间,},plugins: [[vuepress/last-updated,{trans…

大数据分析与应用实验任务十

大数据分析与应用实验任务十 实验目的: 通过实验掌握spark SQL的基本编程方法; 熟悉RDD到DataFrame的转化方法; 通过实验熟悉spark SQL管理不同数据源的方法。 实验任务: 进入pyspark实验环境,在桌面环境打开jup…

基于Java SSM框架实现美食推荐管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现美食推荐管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

使用Jetty编写RESTful接口

一、依赖 <!--Jetty服务器的核心依赖项&#xff0c;用于创建和管理服务器。--><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>9.4.43.v20210629</version></dependency…

样品实验Oxfilm351CN高沸点低VOC成膜助剂TDS说明书

样品实验Oxfilm351CN高沸点低VOC成膜助剂TDS说明书 1KG/瓶

在Windows中加密文件或文件夹不需要太大的努力就可以实现,主要有两种加密方法

如果你正在寻找一种在Windows计算机上保持文件和文件夹隐私的简单方法,你有几个选择。 得益于Microsoft Office Suite,你可以使用内置的加密功能对Office文件(如Word文档或PowerPoint演示文稿)进行密码保护。 一些Windows操作系统还配备了加密文件系统(EFS),可以对任何…

建设“参与城市”大学--SMU在2023年绿色金融全球论坛上分享观点

2023年11月21日&#xff0c;由新加坡管理大学&#xff08;SMU&#xff0c;简称新大&#xff09;和中国人民大学&#xff08;RUC&#xff0c;简称人大&#xff09;联合主办的“绿色金融与治理&#xff1a;从承诺到行动”全球论坛在北京召开。论坛汇集了来自新加坡、中国及世界各…

Linux系统iptables

目录 一. 防火墙简介 1. 防火墙定义 2. 防火墙分类 ①. 网络层防火墙 ②. 应用层防火墙 二. iptables 1. iptables定义 2. iptables组成 ①. 规则表 ②. 规则链 3. iptables格式 ①. 管理选项 ②. 匹配条件 ③. 控制类型 四. 案例说明 1. 查看规则表 2. 增加新…

详解云WAF:免费GOODWAF归来

文前聊心 说说这篇文章的目的&#xff1a; 介绍一下自己的开发升级的项目&#xff1a;GOODWAF&#xff0c;看名字也能看的出来这是一款防火墙&#xff0c;但它不同于现在的软件防火墙&#xff0c;它是一款云WAF防火墙。 其实GOODWAF这个IP概念前两年就存在了&#xff0c;但为什…

Python —— Mock接口测试

前言 今天跟小伙伴们一起来学习一下如何编写Python脚本进行mock测试。 什么是mock? 测试桩&#xff0c;模拟被测对象的返回&#xff0c;用于测试 通常意义的mock指的就是mock server, 模拟服务端返回的接口数据&#xff0c;用于前端开发&#xff0c;第三方接口联调 为什么…

Python MD5加密的三种方法(可加盐)

方法一&#xff1a;MD5直接加密 import hashlibtext1123456 print(text1) mdhashlib.md5(text1.encode()) # 创建md5对象 md5pwdmd.hexdigest() # md5加密 print(md5pwd) 输出结果&#xff1a; 方法二&#xff1a;MD5盐加密&#xff0c;将盐拼接在原密码后 import ha…

生成式AI与预测式AI的主要区别与实际应用

近年来&#xff0c;预测式人工智能&#xff08;Predictive AI&#xff09;通过先进的推荐算法、风险评估模型、以及欺诈检测工具&#xff0c;一直在推高着该领域公司的投资回报率。然而&#xff0c;今年初突然杀出的生成式人工智能&#xff08;Generative AI&#xff09;突然成…