Exercices Machine Learning Projet complet : pipeline end-to-end
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Projet complet : pipeline end-to-end

C'est le projet final. Tu vas construire un pipeline ML complet de A a Z, exactement comme tu le ferais en entretien technique ou sur un vrai projet en entreprise. Toutes les briques que tu as apprises s'assemblent ici.

Le workflow standard :
1. Charger et explorer les données
2. Separer features et cible
3. Train/test split
4. Créer un pipeline (preprocessing + modèle)
5. Evaluer avec cross-validation
6. Tuner les hyperparamètres
7. Evaluer le modèle final sur le test set

Écris une fonction pipeline_complet(X, y, feature_names) qui :
1. Fait un train/test split (80/20, stratifie, random_state=42)
2. Crée un pipeline : StandardScaler + RandomForestClassifier
3. Fait un GridSearchCV avec n_estimators=[50, 100] et max_depth=[3, 5, 10] en cv=3
4. Evalue le meilleur modèle sur le test set

Renvoie :
'meilleurs_params' : les meilleurs hyperparamètres
'score_cv' : le meilleur score en cross-validation
'score_test' : l'accuracy sur le test set
'taille_train' : nombre d'echantillons d'entrainement
'taille_test' : nombre d'echantillons de test

Tests (4/4)

Score test entre 0 et 1
import numpy as np
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=10, n_informative=5, random_state=42)
result = pipeline_complet(X, y, [f'f{i}' for i in range(10)])
assert 0 <= result['score_test'] <= 1
Score CV entre 0 et 1
import numpy as np
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=10, random_state=42)
result = pipeline_complet(X, y, [f'f{i}' for i in range(10)])
assert 0 <= result['score_cv'] <= 1
Split 80/20
import numpy as np
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=5, random_state=42)
result = pipeline_complet(X, y, [f'f{i}' for i in range(5)])
assert result['taille_train'] == 160
assert result['taille_test'] == 40
Params valides
import numpy as np
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, n_features=5, random_state=42)
result = pipeline_complet(X, y, [f'f{i}' for i in range(5)])
assert result['meilleurs_params']['model__n_estimators'] in [50, 100]
assert result['meilleurs_params']['model__max_depth'] in [3, 5, 10]

Indices (3 disponibles)

solution.py