Feature engineering : préparer des variables performantes pour le machine learning
Feature engineering est un cours de niveau avancé de 6 leçons (environ 3 h 35), avec 13 exercices et 18 questions de quiz. Prérequis : Apprentissage supervisé : régression et classification, Nettoyage et préparation des données. Les exercices s'exécutent dans le navigateur, sans installation.
- Data science
- Avancé
- 6 leçons
- 3 h 35
- 13 exercices
- Exercices exécutés dans le navigateur
Le cours en bref
Ce cours avancé apprend à transformer des données brutes et hétérogènes en features exploitables par les modèles de machine learning. Vous traitez les variables numériques, catégorielles et temporelles, gérez les valeurs manquantes, construisez des pipelines complets avec ColumnTransformer, créez des features métier sans fuite de données et sélectionnez les variables réellement utiles avec scikit-learn et pandas.
Ce que tu sauras faire
- Transformer des variables numériques (log, puissance, discrétisation, polynômes) selon le modèle visé
- Encoder des variables catégorielles avec OneHotEncoder, OrdinalEncoder et TargetEncoder
- Imputer les valeurs manquantes et exploiter l'information d'absence
- Construire un pipeline complet pour données hétérogènes avec ColumnTransformer
- Créer des features temporelles, cycliques et métier sans fuite de données
- Sélectionner des features et interpréter l'importance par permutation
Programme des 6 leçons
- Corriger l'asymétrie d'une variable avec log1p ou PowerTransformer
- Discrétiser une variable avec KBinsDiscretizer
- Créer des interactions et des termes polynomiaux avec PolynomialFeatures
Transformations numériquesDiscrétisationInteractions et polynômes
- 02
Encoder les variables catégorielles
- Choisir entre encodage one-hot, ordinal et par la cible
- Gérer les catégories inconnues et les catégories rares
- Utiliser TargetEncoder sans fuite de données
- 03
Traiter les valeurs manquantes
- Imputer des valeurs manquantes avec SimpleImputer et KNNImputer
- Conserver l'information « valeur manquante » avec add_indicator
- Choisir entre imputation et modèles qui gèrent nativement les NaN
ImputationIndicateur de valeur manquanteMécanismes de données manquantes
- 04
ColumnTransformer : des pipelines pour données hétérogènes
- Appliquer des prétraitements différents selon le type de colonne avec ColumnTransformer
- Assembler un pipeline complet de la donnée brute à la prédiction
- Inspecter les features produites avec get_feature_names_out et set_output
- 05
Créer des features métier et temporelles
- Extraire des informations utiles d'une date
- Encoder des variables cycliques (heure, mois) avec sinus et cosinus
- Intégrer des features métier personnalisées dans un pipeline avec FunctionTransformer
- 06
Sélectionner les features utiles
- Appliquer des méthodes de filtrage (VarianceThreshold, SelectKBest)
- Sélectionner via un modèle (SelectFromModel) et par importance de permutation
- Placer la sélection dans le pipeline pour éviter toute fuite
Sélection par filtrageSélection par modèleImportance par permutation
Projet final
Pipeline de prédiction du délai de vente de biens immobiliers
Générez avec numpy et pandas un jeu de 5 000 annonces immobilières réalistes : date de publication, surface, nombre de pièces, prix, quartier (une centaine de modalités), type de bien, étage, présence d'un balcon, diagnostic énergétique ordonné, avec des valeurs manquantes plausibles et une cible « vendu en moins de 60 jours ». Construisez un pipeline complet : features métier (prix au m², écart au prix moyen du quartier calculé sans fuite), features temporelles et cycliques, encodages adaptés à chaque variable, imputation avec indicateurs, sélection de features. Comparez un modèle linéaire et un HistGradientBoosting par validation croisée et analysez les importances par permutation.
Livrables
- Le script de génération des données et le pipeline scikit-learn complet acceptant des données brutes
- Un tableau d'ablation montrant le gain de chaque famille de features (validation croisée)
- Un graphique des importances par permutation sur un jeu de validation
- Une note expliquant chaque choix d'encodage et les précautions prises contre les fuites
Critères d'évaluation
- Toutes les transformations apprises sont dans le pipeline (aucune fuite)
- Encodages cohérents avec la nature des variables et le modèle
- Features métier et temporelles pertinentes et calculables au moment de la prédiction
- Comparaison rigoureuse des variantes par validation croisée
- Pipeline robuste aux valeurs manquantes et aux catégories inconnues
Questions fréquentes
Qu'est-ce que le feature engineering ?
C'est l'ensemble des transformations qui rendent les données brutes exploitables et informatives pour un modèle : transformations numériques, encodage des catégories, traitement des valeurs manquantes, création de variables métier et sélection des plus utiles.
Le feature engineering est-il encore utile avec le gradient boosting ou le deep learning ?
Oui. Les modèles puissants réduisent le besoin de certaines transformations, mais les features métier (ratios, agrégats, informations temporelles) et un traitement rigoureux des catégories et des manquants restent souvent décisifs sur les données tabulaires.
Comment éviter les fuites de données lors du feature engineering ?
En plaçant toutes les transformations qui apprennent des paramètres dans un pipeline scikit-learn, en utilisant TargetEncoder plutôt qu'une moyenne de cible calculée à la main, et en ne construisant des agrégats qu'à partir d'informations disponibles au moment de la prédiction.
Quels prérequis pour ce cours ?
Il faut connaître les modèles supervisés de scikit-learn (cours Apprentissage supervisé) et être à l'aise avec pandas pour manipuler des DataFrame, des dates et des regroupements.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « Feature engineering » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.