ConsigneDivise un dataset en ensembles d'entraînement et de test
Le train/test split sépare le dataset en 2 parties :
- TRAIN : pour entraîner le modèle- TEST : pour évaluer ses performances sur des données qu'il n'a JAMAIS vuesObjectif : mesurer la généralisation, pas la mémorisation.
Si on évaluait sur les données d'entraînement, n'importe quel modèle aurait un score parfait en apprenant par cœur. Le test set sert d'arbitre indépendant.
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, # 20% en test, 80% en train random_state=42 # graine pour reproductibilité)Paramètres clés
stratify=y maintient la proportion des classes (classification déséquilibrée)shuffle=True mélange avant split (défaut)import numpy as npfrom sklearn.model_selection import train_test_splitnp.random.seed(42)X = np.random.randn(100, 3)y = (X[:, 0] + X[:, 1] > 0).astype(int)X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42)print(f'X_train: {X_train.shape}') # (80, 3)print(f'X_test: {X_test.shape}') # (20, 3)print(f'Ratio test: {len(X_test)/len(X):.0%}') # 20%test_size=0.2 → 80/20 classique pour datasets de taille moyennetest_size=0.3 → 70/30 pour petits datasetstest_size=0.1 → 90/10 pour très grands datasets (millions de lignes)Pour faire de la sélection d'hyperparamètres sans toucher au test set :
X_tv, X_test, y_tv, y_test = train_test_split(X, y, test_size=0.2)X_tr, X_val, y_tr, y_val = train_test_split(X_tv, y_tv, test_size=0.25)# → 60% train, 20% val, 20% testAlternative plus robuste pour petits datasets : la cross validation (leçon 85).
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →