Pipeline ML end-to-end : de la donnée brute à la prédiction. Met en pratique tout ce qu'on a vu (prétraitement, split, modèle, évaluation).
1. CHARGEMENT / GÉNÉRATION des données
2. EDA rapide
3. SPLIT train/test (test set MIS DE CÔTÉ — touché qu'à la fin)
4. PRÉTRAITEMENT dans un pipeline (scaling, encoding, imputation)
5. MODÈLE avec ses hyperparamètres
6. ÉVALUATION par cross-validation sur le train
7. ENTRAÎNEMENT final sur 100% du train
8. ÉVALUATION FINALE sur le test set
9. INTERPRÉTATION (feature importance, erreurs)import numpy as np, pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.pipeline import Pipelinenp.random.seed(42)
n = 500
df = pd.DataFrame({
'heures': np.random.uniform(1, 15, n),
'exercices': np.random.randint(5, 100, n),
'note_prev': np.random.uniform(0, 20, n),
'absences': np.random.randint(0, 20, n),
})
df['reussite'] = ((df['heures']*2 + df['exercices']*0.3 + df['note_prev']*3 -
df['absences']*5 + np.random.normal(0, 10, n)) > 50).astype(int)# 1. Split
X = df.drop('reussite', axis=1)
y = df['reussite']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 2. Pipeline
pipe = Pipeline([
('scaler', StandardScaler()),
('rf', RandomForestClassifier(n_estimators=100, random_state=42))
])# 3. Cross-validation sur le TRAIN seulement
cv_scores = cross_val_score(pipe, X_train, y_train, cv=5)
print(f'CV Accuracy: {cv_scores.mean():.4f} (+/- {cv_scores.std():.4f})')# 4. Fit final + éval sur TEST holdout
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
print(f'Test Accuracy: {pipe.score(X_test, y_test):.4f}')
print(classification_report(y_test, y_pred))# 5. Interprétation : feature importance
importances = pipe.named_steps['rf'].feature_importances_
for name, imp in sorted(zip(X.columns, importances), key=lambda x: -x[1]):
print(f' {name}: {imp:.3f}')- GridSearchCV / RandomizedSearchCV : recherche d'hyperparamètres
- StratifiedKFold : préserver les proportions des classes en CV
- feature engineering : créer de nouvelles variables
- autres modèles : XGBoost, LightGBM, neural nets
- calibration de probabilité (CalibratedClassifierCV)
- métriques métier (ROC-AUC, lift...)# Sauvegarder le pipeline entraîné
import joblib
joblib.dump(pipe, 'model.pkl')# Recharger plus tard
pipe = joblib.load('model.pkl')
pipe.predict(X_new)Tu viens de boucler 100 leçons couvrant Python de zéro jusqu'au ML complet. Pour aller plus loin : Kaggle (compétitions), papers (arxiv-sanity), libs avancées (PyTorch, TensorFlow, MLflow, Airflow).
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →