Nettoyer et préparer les données pour le Machine Learning
Des données propres = Un modèle performant
Des données sales = Un modèle inutile
Pourquoi on ne peut pas sauter cette étape
10 000 annonces collectées - Voici ce qu'on trouve :
15% des prix absents
8% des surfaces vides
→ Impossible de calculer
200 annonces identiques
Même adresse, même prix
→ Biais dans l'entraînement
Prix : 50 millions €
Surface : -20 m²
→ Erreurs évidentes
Comprendre avant de nettoyer
Nombre de lignes × colonnes → 10 000 lignes × 12 colonnes
Numériques : Prix, Surface, Chambres
Catégorielles : Quartier, Type, État
Prix : 1 500 (15%), Surface : 800 (8%), Quartier : 0
Prix : 100k - 800k (médiane 280k)
Outliers possibles au-delà de 2M
Éviter de compter deux fois la même information
250 doublons détectés !
Doublons supprimés ✓
Outliers : Erreurs ou valeurs extrêmes réelles ?
Boxplot
Repère visuel des valeurs extrêmes
Écarts-types
|Z| > 3 = outlier
(99.7% des données)
Intervalle interquartile
< Q1 - 1.5×IQR
> Q3 + 1.5×IQR
Distribution normale :
150k - 600k € (99% des cas)
✓ Valeurs attendues
Outliers détectés :
15 millions € ❌
-50 000 € ❌
✗ À investiguer
4 stratégies selon le contexte
Quand : Erreur évidente de saisie
Exemple : Surface = -20 m² → Suppression
Quand : Valeur extrême mais pas impossible
Exemple : Prix 5M → Remplacer par 99e percentile (800k) → Capping
Quand : Distribution asymétrique
Exemple : Appliquer log(prix) pour réduire l'impact → Transformation
Quand : Valeur légitime et informative
Exemple : Palais à 15M (vérifié) → Conserver
Stratégies selon le pourcentage manquant
| % Manquant | Stratégie | Action |
|---|---|---|
| < 5% | Supprimer les lignes | Suppression |
| 5-40% | Imputation intelligente | Moyenne / Médiane / Mode |
| > 40% | Supprimer la colonne | Suppression colonne |
| 100% | Supprimer immédiatement | ❌ Inutile |
Scaling : Normalisation vs Standardisation
Formule :
X' = (X - min) / (max - min)
Résultat : Toutes les valeurs entre 0 et 1
Quand l'utiliser :
Formule :
X' = (X - μ) / σ
Résultat : Moyenne 0, écart-type 1
Quand l'utiliser :
Garder seulement les meilleures variables
Réduire l'overfitting
Moins de bruit
Accélérer l'entraînement
Moins de calculs
Améliorer l'interprétabilité
Plus simple à comprendre
Critères statistiques
Test de combinaisons
Importance dans le modèle
Avant : Accuracy 82% (overfitting)
Après : Accuracy 85% (meilleure généralisation)
Train / Validation / Test
Rôle : Entraîner le modèle
Le modèle apprend les patterns sur ces données
Rôle : Optimiser hyperparamètres
Ajuster le modèle sans toucher au test
Rôle : Évaluation finale
Sanctuaire : 1 seule utilisation !
Les étapes dans l'ordre
Comprendre les données : types, distribution, problèmes
Supprimer les entrées identiques
Détecter et traiter (supprimer / capper / transformer)
Imputer ou supprimer selon le %
One-Hot, Label Encoding, Target Encoding
Créer nouvelles features pertinentes
Normalisation ou Standardisation
Garder les meilleures variables
Diviser pour entraînement et évaluation
Vérifications essentielles
Vérifier : df.isnull().sum() == 0
Vérifier : df.duplicated().sum() == 0
Supprimés, cappés ou transformés selon contexte
One-Hot ou Label Encoding appliqué
Normalisation ou Standardisation selon l'algo
Feature engineering appliqué si nécessaire
Généralement 60/20/20
Preprocessing fait APRÈS le split
"Clean data is happy data"
Des données bien préparées = 70% du succès