Source code for acds.benchmarks.libras

import numpy as np

import torch
from torch.utils.data import DataLoader
from aeon.datasets import load_classification
from sklearn.model_selection import train_test_split

[docs] def get_libras_data( bs_train: int, bs_test: int, whole_train: bool = False, ) -> tuple[DataLoader, DataLoader, DataLoader]: """Get the Libras dataset from time series classification website and return the train, validation and test dataloaders. Args: bs_train (int): Batch size for the train dataloader. bs_test (int): Batch size for the validation and test dataloaders. whole_train (bool, optional): If True, the whole dataset is used for training. Defaults to False. Returns: Tuple[DataLoader, DataLoader, DataLoader]: Train, validation and test dataloaders. """ def inp_out_pairs(data_x, data_y): mydata = [] for i in range(len(data_y)): sample = (torch.tensor(data_x[i, :], dtype=torch.float32), torch.tensor(int(data_y[i]), dtype=torch.long)) mydata.append(sample) return mydata x, y = load_classification("Libras") arr_data = np.array(x) arr_data = arr_data.transpose(0, 2, 1) arr_targets = np.array(y) train_series = arr_data[:180] train_targets = arr_targets[:180].astype(float) - 1.0 test_series = arr_data[180:] test_targets = arr_targets[180:].astype(float) - 1.0 valid_series = [] valid_targets = [] if whole_train: '''indices = np.arange(len(test_series)) np.random.seed(20) np.random.shuffle(indices) test_series = test_series[indices] test_targets = test_targets[indices].astype(float) - 1.0''' else: train_series, valid_series, train_targets, valid_targets = train_test_split(train_series, train_targets, test_size=0.3, random_state=20, stratify=train_targets) train_data, eval_data, test_data = inp_out_pairs(train_series, train_targets), inp_out_pairs(valid_series, valid_targets), inp_out_pairs(test_series, test_targets) train_loader = DataLoader( train_data, batch_size=bs_train, shuffle=True, drop_last=False ) eval_loader = DataLoader( eval_data, batch_size=bs_test, shuffle=False, drop_last=False ) test_loader = DataLoader( test_data, batch_size=bs_test, shuffle=False, drop_last=False ) return train_loader, eval_loader, test_loader