TIMESNET 开源项目: Dataset_Market 类 - 时间序列数据加载器

TIMESNET 开源项目中的 data_loader.py 文件定义了一个名为 Dataset_Market 的类,该类继承自 Dataset 类,专门用于加载和处理时间序列数据集。它接受 pandas.DataFrame 类型的完整数据集,并根据输入参数进行数据预处理、划分训练集、验证集和测试集,最终将数据转换为 PyTorchTensor 类型,方便进行时间序列模型训练。

Dataset_Market 类是基于 Dataset_Custom 类进行修改的,主要改变了以下几个方面:

  1. 数据加载方式: Dataset_Market 类直接接受一个 pandas.DataFrame 类型的完整时间序列数据集,而不再需要从 CSV 文件中读取数据。

  2. 数据集划分方式: Dataset_Market 类通过一个名为 flag 的参数来确定数据集的划分方式,默认情况下 flag='train' 表示将整个数据集作为训练集。当 flag='val' 时,整个数据集将作为验证集,当 flag='test' 时,整个数据集将作为测试集。

  3. 数据类型: 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 类型的完整数据集传入即可。该类会自动进行数据预处理、划分训练集、验证集和测试集,并最终将数据转换为 PyTorchTensor 类型,方便进行时间序列模型训练。

TIMESNET 开源项目: Dataset_Market 类 - 时间序列数据加载器

原文地址: https://www.cveoy.top/t/topic/lMMc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录