Introduction
Splitting data into train, validation, and test sets helps us build models that learn well and check how good they are on new data.
from sklearn.model_selection import train_test_split # Split data into train and temp (val+test) train_data, temp_data = train_test_split(data, test_size=0.4, random_state=42) # Split temp_data into validation and test val_data, test_data = train_test_split(temp_data, test_size=0.5, random_state=42)
train_data, temp_data = train_test_split(data, test_size=0.3) val_data, test_data = train_test_split(temp_data, test_size=0.5)
train_data, val_data = train_test_split(data, test_size=0.2) # No separate test set here
import torch from torch.utils.data import DataLoader, random_split, TensorDataset # Create dummy dataset of 100 samples with 5 features X = torch.randn(100, 5) y = torch.randint(0, 2, (100,)) # Combine features and labels into a TensorDataset dataset = TensorDataset(X, y) # Define split sizes: 70 train, 15 val, 15 test train_size = 70 val_size = 15 test_size = 15 # Use random_split to split dataset train_dataset, val_dataset, test_dataset = random_split(dataset, [train_size, val_size, test_size], generator=torch.Generator().manual_seed(42)) # Create DataLoaders train_loader = DataLoader(train_dataset, batch_size=10) val_loader = DataLoader(val_dataset, batch_size=10) test_loader = DataLoader(test_dataset, batch_size=10) # Print sizes to confirm print(f"Train samples: {len(train_dataset)}") print(f"Validation samples: {len(val_dataset)}") print(f"Test samples: {len(test_dataset)}")
random_split?val_set?
from torch.utils.data import random_split full_dataset = list(range(100)) train_size = 70 val_size = 20 test_size = 10 train_set, val_set, test_set = random_split(full_dataset, [train_size, val_size, test_size]) print(len(val_set))
Sum of input lengths does not equal the length of the input dataset!. What is the error?
from torch.utils.data import random_split dataset = list(range(50)) train_set, test_set = random_split(dataset, [30, 25])
random_split?Pass the test and this pattern moves unknown