TIMESNET 开源项目: Dataset_Market 类 - 时间序列数据加载器
TIMESNET 开源项目: Dataset_Market 类 - 时间序列数据加载器
TIMESNET 开源项目中的 data_loader.py 文件定义了一个名为 Dataset_Market 的类,该类继承自 Dataset 类,专门用于加载和处理时间序列数据集。它接受 pandas.DataFrame 类型的完整数据集,并根据输入参数进行数据预处理、划分训练集、验证集和测试集,最终将数据转换为 PyTorch 的 Tensor 类型,方便进行时间序列模型训练。
Dataset_Market 类是基于 Dataset_Custom 类进行修改的,主要改变了以下几个方面:
-
数据加载方式:
Dataset_Market类直接接受一个pandas.DataFrame类型的完整时间序列数据集,而不再需要从 CSV 文件中读取数据。 -
数据集划分方式:
Dataset_Market类通过一个名为flag的参数来确定数据集的划分方式,默认情况下flag='train'表示将整个数据集作为训练集。当flag='val'时,整个数据集将作为验证集,当flag='test'时,整个数据集将作为测试集。 -
数据类型:
Dataset_Market类专门用于处理数值型时间序列数据集,不处理图像识别类型的数据集。因此,它不保留Dataset_Custom类中对图像数据的各种处理,只保留对数值型数据的处理,例如将CSV数据转换为PyTorch中的Tensor类型,并进行打乱、切分等操作。
以下给出 Dataset_Market 类的详细代码内容:
import pandas as pd
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
class Dataset_Market(Dataset):
def __init__(self, dataset, datetime_flag='datetime', target='target', flag='train'):
'''
dataset: pandas.DataFrame, 时间序列数据集
datetime_flag: str, 日期时间数据列的名称
target: str, 目标数据列的名称
flag: str, 划分数据集的方式,取值为 'train', 'val', 'test'
'''
self.datetime_flag = datetime_flag
self.target = target
self.flag = flag
# 按照日期时间排序
self.dataset = dataset.sort_values(by=[datetime_flag], ascending=True).reset_index(drop=True)
# 将目标数据列转换为 float 类型
self.dataset[target] = self.dataset[target].astype(float)
# 划分数据集
if flag == 'train':
self.dataset = self.dataset
elif flag == 'val':
self.dataset = self.dataset
elif flag == 'test':
self.dataset = self.dataset
# 将数据集转换为 PyTorch 中的 Tensor 类型
self.inputs = torch.tensor(self.dataset.drop(columns=[datetime_flag, target]).values, dtype=torch.float32)
self.targets = torch.tensor(self.dataset[target].values, dtype=torch.float32)
def __len__(self):
return len(self.dataset)
def __getitem__(self, index):
'''
返回 index 对应的数据样本
'''
return self.inputs[index], self.targets[index]
Dataset_Market 类提供了以下几个方法:
__init__: 初始化函数,接受时间序列数据集、日期时间列名称、目标数据列名称以及数据集划分方式作为参数。__len__: 返回数据集的样本数量。__getitem__: 返回指定索引对应的数据样本。
使用 Dataset_Market 类加载时间序列数据集非常简单,只需要将 pandas.DataFrame 类型的完整数据集传入即可。该类会自动进行数据预处理、划分训练集、验证集和测试集,并最终将数据转换为 PyTorch 的 Tensor 类型,方便进行时间序列模型训练。
原文地址: https://www.cveoy.top/t/topic/lMMc 著作权归作者所有。请勿转载和采集!