Sliding Window Dataset

https://mlpills.dev/time-series/forecasting-in-time-series/

Time Series Forecasting에 사용되는 Sliding Window Dataset은 연속적인 시계열 데이터를 여러 개의 고정된 크기의 입력과 출력 윈도우로 나누어 Dataset을 구성하는 방법입니다.

 

다음은 Pytorch로 Dataset 다변량(Multi-Variate) 다중 스텝(Multi-Step) 데이터셋을 구성하기 위한 코드입니다.

import torch
from torch.utils.data import Dataset

class SlidingWindowDataset(Dataset):
    def __init__(self, train_X, target_variables, input_window, output_window, stride=1):
        self.train_X = train_X
        self.train_y = train_X[target_variables].values

        self.input_window = input_window
        self.output_window = output_window
        self.stride = stride

        self.num_samples = (len(self.train_y) - input_window - output_window) // stride + 1

    def create_features(self, df, idx):
        return np.stack([df[var].values[idx * self.stride:idx * self.stride + self.input_window] for var in self.train_X.columns], axis=-1)

    def create_target(self, target, idx):
        return target[idx * self.stride + self.input_window : idx * self.stride + self.input_window + self.output_window]

    def __getitem__(self, idx):
        X = self.create_features(self.train_X, idx)
        Y = self.create_target(self.train_y, idx)

        X_tensor = torch.tensor(X, dtype=torch.float32)
        Y_tensor = torch.tensor(Y, dtype=torch.float32)

        return X_tensor, Y_tensor

    def __len__(self):
        return self.num_samplesCopy Icon

 

욱근욱