Notebooks reproductibles : ma checklist en 8 points
Les habitudes qui sauvent des semaines de débogage — et votre crédibilité le jour de la revue.
Sommaire
Le test qui ne pardonne pas
Un notebook reproductible, c'est un notebook qui passe ce test : « Restart Kernel & Run All », sur une machine fraîche, par quelqu'un d'autre que vous — et produit les mêmes chiffres. Tout le reste est de la décoration. La checklist ci-dessous sert exactement cet objectif.
La checklist, point par point
- Graine aléatoire fixée partout — numpy, random, et la bibliothèque de ML. Une seule ligne oubliée et deux exécutions divergent.
- Environnement figé — versions exactes des dépendances dans le dépôt, à côté du notebook.
- Données versionnées — un chemin vers un snapshot immuable (
data/2025-11-30/train.parquet), jamais « la table de prod qui change tous les jours ». - Cellules exécutées dans l'ordre — les numéros d'exécution doivent être séquentiels. Un
[17]suivi d'un[3]trahit un état caché. - Aucun état caché — pas de variable définie dans une cellule supprimée depuis. Le « Run All » est le juge de paix.
- Paramètres en tête — chemins, dates, seuils regroupés dans la première cellule, pas dispersés au fil des cellules.
- Résultats clés affichés — les métriques finales imprimées en clair, pour qu'on puisse comparer deux exécutions en cinq secondes.
- Durée d'exécution raisonnable — au-delà de 15 minutes, personne ne relancera jamais le notebook. Échantillonnez pour l'exploration.
Le code qui pose les fondations
Ma première cellule, dans tous mes notebooks :
# --- Paramètres & reproductibilité (toujours en premier) ---
import random
import numpy as np
SEED = 42
random.seed(SEED)
np.random.seed(SEED)
DATA_DIR = "data/2025-11-30/" # snapshot immuable et daté
TEST_SIZE = 0.2
TARGET = "churn"
print(f"Snapshot : {DATA_DIR} | seed : {SEED}") # trace visible dans la sortie
Et côté environnement, pas de magie : un requirements.txt avec versions exactes (pandas==2.2.3, pas pandas>=2), généré avec pip freeze une fois l'analyse stabilisée.
L'habitude qui change tout
Avant chaque commit, un « Restart Kernel & Run All ». Trente secondes d'attente qui éliminent 90 % des notebooks cassés. C'est le brossage de dents de la data science : personne ne vous félicitera, mais tout le monde remarquera si vous l'oubliez.
Et quand le notebook ne suffit plus
Cette checklist couvre l'exploration et l'analyse. Mais un notebook n'est ni un pipeline, ni un service : quand le code doit tourner tous les jours ou servir des prédictions, il est temps de le réécrire en modules testés — l'article sur Great Expectations raconte la suite du voyage. Le notebook reste ce qu'il fait de mieux : un laboratoire, pas une usine.