Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 13 / Notion

Train, validation et test

Donner à chaque donnée un rôle unique.

◷ 22 minutesTravail sur votre machine

Trois rôles

Train : ajuste paramètres et transformations. Validation : choisit hyperparamètres et modèles. Test : juge final, vu une seule fois, jamais pour choisir. Mélanger val et test = s'auto-congratuler.

Pratique

Le découpage dépend de la question. Pour un nouveau client, les commandes d'un même client ne doivent pas se retrouver des deux côtés. Pour prédire des semaines futures, on découperait plutôt par date. Un tirage aléatoire ligne par ligne peut donner un score trop optimiste quand des observations se ressemblent.

Sur data/colis_propres.csv, créé dans l'atelier de nettoyage, gardez 20 % des clients pour le test. Le même découpage servira à la régression et à la classification :

import pandas as pd
from sklearn.model_selection import GroupShuffleSplit

df = pd.read_csv("data/colis_propres.csv")
decoupage = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
train_idx, test_idx = next(decoupage.split(df, groups=df["client_id"]))
train, test = df.iloc[train_idx].copy(), df.iloc[test_idx].copy()
assert set(train["client_id"]).isdisjoint(test["client_id"])
print(len(train), len(test), train["retard"].mean(), test["retard"].mean())

GroupShuffleSplit réserve ici des clients, pas exactement 20 % des lignes ; comparez aussi la proportion de retards de chaque côté. Gardez les indices du test pour la seule évaluation finale. Pour choisir un modèle sur le train, GroupKFold fera des plis de validation sans mélanger les clients. Les transformations apprises, comme l'imputation du poids, iront dans le pipeline et seront ajustées séparément dans chaque pli.

Si votre objectif est la généralisation aux mois futurs, faites un découpage chronologique à la place et expliquez pourquoi. Un seul protocole explicite vaut mieux qu'un score obtenu en essayant plusieurs découpages après avoir vu le test.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.