kiruluta's picture
Upload folder using huggingface_hub
45eaa9d verified
Raw History Blame Contribute Delete
1.11 kB
"""Dataset utilities."""
from __future__ import annotations
from dataclasses import dataclass
import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
@dataclass
class SplitData:
X_train: np.ndarray
y_train: np.ndarray
X_val: np.ndarray
y_val: np.ndarray
X_test: np.ndarray
y_test: np.ndarray
def load_digits_splits(seed: int = 7, test_size: float = 0.20, val_size: float = 0.20) -> SplitData:
"""Load standard sklearn Digits and create stratified train/val/test splits."""
digits = load_digits()
X = digits.images.astype(np.float32) / 16.0
y = digits.target.astype(np.int64)
X_trainval, X_test, y_trainval, y_test = train_test_split(
X, y, test_size=test_size, random_state=seed, stratify=y
)
val_fraction_of_trainval = val_size / (1.0 - test_size)
X_train, X_val, y_train, y_val = train_test_split(
X_trainval, y_trainval, test_size=val_fraction_of_trainval, random_state=seed, stratify=y_trainval
)
return SplitData(X_train, y_train, X_val, y_val, X_test, y_test)