Spaces:
Runtime error
Runtime error
| import torch | |
| from torch.utils.data import Dataset, DataLoader | |
| import torch.nn.functional as F | |
| from sklearn.preprocessing import MinMaxScaler, StandardScaler | |
| import numpy as np | |
| class TimeDataset(Dataset): | |
| def __init__(self, raw_data, edge_index, mode='train', config = None): | |
| self.raw_data = raw_data | |
| self.config = config | |
| self.edge_index = edge_index | |
| self.mode = mode | |
| x_data = raw_data[:-1] | |
| labels = raw_data[-1] | |
| data = x_data | |
| # to tensor | |
| data = torch.tensor(data).double() | |
| labels = torch.tensor(labels).double() | |
| self.x, self.y, self.labels = self.process(data, labels) | |
| def __len__(self): | |
| return len(self.x) | |
| def process(self, data, labels): | |
| x_arr, y_arr = [], [] | |
| labels_arr = [] | |
| slide_win, slide_stride = [self.config[k] for k | |
| in ['slide_win', 'slide_stride'] | |
| ] | |
| is_train = self.mode == 'train' | |
| node_num, total_time_len = data.shape | |
| rang = range(slide_win, total_time_len, slide_stride) if is_train else range(slide_win, total_time_len) | |
| for i in rang: | |
| ft = data[:, i-slide_win:i] | |
| tar = data[:, i] | |
| x_arr.append(ft) | |
| y_arr.append(tar) | |
| labels_arr.append(labels[i]) | |
| x = torch.stack(x_arr).contiguous() | |
| y = torch.stack(y_arr).contiguous() | |
| labels = torch.Tensor(labels_arr).contiguous() | |
| return x, y, labels | |
| def __getitem__(self, idx): | |
| feature = self.x[idx].double() | |
| y = self.y[idx].double() | |
| edge_index = self.edge_index.long() | |
| label = self.labels[idx].double() | |
| return feature, y, label, edge_index | |