Sliding Window Dataset
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_samples
'ML & DL > Deep Learning' 카테고리의 다른 글
[Time Sereis Forecasting] One-Step, Multi-Step, Multi-Output (0) | 2024.11.04 |
---|---|
[Time Series Forecasting] LSTM, GRU, CNN, ... PyTorch 구현 (0) | 2024.10.10 |
IoU, Precision, Recall, mAP 정리 (0) | 2023.05.19 |
WBF, Ensemble for Object Detection 정리 (0) | 2023.05.19 |
NMS, Soft-NMS 정리 및 구현 (0) | 2023.05.19 |