Le feature engineering est souvent laborieux et crucial pour la performance des modèles. Ces 5 scripts Python automatisent les tâches essentielles, de l’encodage des catégories aux interactions complexes, pour booster vos modèles efficacement.
3 principaux points à retenir.
- Automatisez l’encodage et la transformation des données catégorielles et numériques pour gagner du temps et éviter les erreurs.
- Découvrez et exploitez les interactions entre features pour capter des signaux ignorés par les variables isolées.
- Sélectionnez automatiquement les features optimales pour maximiser la performance tout en réduisant la complexité.
Pourquoi automatiser l’encodage des variables catégorielles ?
Automatiser l’encodage des variables catégorielles, c’est un peu comme passer d’une vieille voiture à une formule 1. Pourquoi s’embêter avec des méthodes manuelles, quand un script Python peut faire le boulot plus vite et sans erreur ? Ce script analyse la cardinalité de chaque variable et sa corrélation avec la cible, et en fonction de ces critères, il applique la méthode d’encodage la plus pertinente. Vous voulez du one-hot encoding pour les variables à faible cardinalité ? Pas de souci. Vous avez des variables à haute cardinalité ? Le script opte pour l’encodage par fréquence. Et si vous avez des variables ordinales, il utilisera le label encoding. Simple, non ?
Mais ce n’est pas tout. L’un des vrais défis de l’encodage, c’est de gérer les catégories rares et celles qui n’apparaissent pas dans vos données d’entraînement, mais qui pourraient se glisser dans votre jeu de test. Ce script s’assure que ces catégories sont correctement traitées, en les regroupant dans une catégorie « autre », garantissant ainsi la stabilité et la performance de votre modèle. En évitant les erreurs d’encodage, vous augmentez la fiabilité de vos prédictions.
Voici un exemple d’encodage automatique avec un code Python simplifié :
import pandas as pd
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
# Exemple de DataFrame
data = pd.DataFrame({
'fruit': ['pomme', 'banane', 'orange', 'pomme', 'kiwi'],
'couleur': ['rouge', 'jaune', 'orange', 'rouge', 'vert']
})
# Initialisation des encodeurs
onehot_encoder = OneHotEncoder(sparse=False)
label_encoder = LabelEncoder()
# Encodage de la variable 'fruit'
data['fruit_encoded'] = label_encoder.fit_transform(data['fruit'])
# Encodage de la variable 'couleur' avec One-Hot Encoding
couleur_encoded = onehot_encoder.fit_transform(data[['couleur']])
data = data.join(pd.DataFrame(couleur_encoded, columns=onehot_encoder.get_feature_names_out(['couleur'])))
print(data)
Dans cet exemple, vous voyez comment le script gère l’encodage des variables catégorielles de manière fluide, en évitant les pièges courants. L’automatisation de ce processus permet non seulement de gagner du temps, mais aussi d’améliorer la qualité de vos données. En somme, il n’y a pas à hésiter : l’encodage automatique est la voie à suivre pour optimiser votre feature engineering. Pour découvrir d’autres astuces, jetez un œil à ce lien.
Comment transformer efficacement les variables numériques ?
La transformation automatique des variables numériques est un enjeu crucial en feature engineering. Pourquoi ? Parce que des distributions biaisées, des valeurs aberrantes, et des échelles différentes peuvent gravement nuire aux performances de vos modèles. Le script que nous allons explorer se charge de tester plusieurs transformations et de sélectionner la meilleure en fonction de la normalité des données et des résultats du modèle.
Le processus commence par l’analyse de chaque variable numérique. Le script applique des transformations telles que :
- Transformation logarithmique : idéale pour réduire l’impact des valeurs extrêmes, mais attention aux valeurs nulles ou négatives.
- Box-Cox : transforme vos données pour les rendre plus normales, mais nécessite des valeurs strictement positives.
- Yeo-Johnson : similaire à Box-Cox, mais peut gérer les valeurs négatives, rendant cette méthode plus flexible.
- Normalisation et standardisation : ces techniques ajustent les échelles des variables pour qu’elles soient comparables.
Mais comment évaluer l’efficacité de chaque transformation ? Le script utilise des tests de normalité comme le test de Shapiro-Wilk et l’Anderson-Darling pour mesurer la normalité des distributions après transformation. En parallèle, il évalue aussi l’impact sur les performances du modèle, utilisant par exemple la validation croisée pour déterminer si les transformations améliorent réellement les prédictions.
Pour gérer les valeurs nulles et négatives, le script applique des techniques adaptées. Pour les valeurs nulles, il peut les remplacer par une petite constante avant d’appliquer la transformation logarithmique. Pour les négatives, le Yeo-Johnson entre en jeu, permettant ainsi d’éviter les erreurs de transformation.
Voici un exemple de code Python illustrant comment appliquer ces transformations :
import pandas as pd
from sklearn.preprocessing import PowerTransformer
data = pd.DataFrame({'feature': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1]})
pt = PowerTransformer(method='yeo-johnson')
data['transformed_feature'] = pt.fit_transform(data[['feature']])
Ce script est un outil puissant pour automatiser la transformation des variables numériques, garantissant que vous ne laissiez pas passer des opportunités d’améliorer vos modèles. Ne sous-estimez pas l’importance de cette étape dans votre pipeline de machine learning.
Quels bénéfices tirer des interactions entre features ?
Les interactions entre features, c’est un peu le Saint Graal du machine learning. Elles permettent de révéler des signaux complexes que les variables individuelles ne capturent pas. Par exemple, le revenu d’un client peut dépendre différemment selon son segment, ou l’impact d’un budget publicitaire peut varier selon la saison. Si vous ne testez pas ces combinaisons, vous passez à côté de potentiels trésors d’informations.
Le script dont nous parlons ici génère des interactions en utilisant des opérations mathématiques comme les produits, les ratios et les sommes, ainsi que des combinaisons catégorielles. Comment cela fonctionne-t-il ? Une fois que les interactions sont créées, chaque candidate est évaluée selon son pouvoir prédictif. Pour cela, on utilise des scores d’importance ou d’information mutuelle. Cela évite de se retrouver avec une explosion de features, un vrai casse-tête pour votre modèle.
Voici un aperçu des types d’interactions que le script peut générer :
- Interactions numériques : produits, sommes, différences, et ratios entre features numériques.
- Combinaisons catégorielles : jointures d’encodages qui permettent de capturer les relations entre catégories.
La méthode d’évaluation est cruciale. Chaque interaction est notée en fonction de son importance, permettant de filtrer celles qui ajoutent réellement de la valeur. En général, on garde uniquement les N interactions les plus pertinentes, ce qui simplifie le modèle tout en maximisant sa performance.
Pour éviter l’explosion de features, le script gère intelligemment les interactions. Il élimine les combinaisons peu significatives et évite les redondances. Cela signifie que vous n’aurez pas à passer des heures à tester chaque interaction manuellement.
Voici un exemple de code Python qui illustre la génération et le filtrage des interactions clés :
import pandas as pd
from sklearn.feature_selection import mutual_info_regression
from itertools import combinations
# Exemple de DataFrame
data = pd.DataFrame({
'feature1': [1, 2, 3, 4],
'feature2': [5, 6, 7, 8],
'target': [1, 2, 3, 4]
})
# Générer des interactions
def generate_interactions(df):
interactions = pd.DataFrame()
for (col1, col2) in combinations(df.columns[:-1], 2):
interactions[f'{col1}_x_{col2}'] = df[col1] * df[col2]
return interactions
interactions = generate_interactions(data)
# Évaluer l'importance
X = pd.concat([data.drop('target', axis=1), interactions], axis=1)
y = data['target']
mi_scores = mutual_info_regression(X, y)
# Filtrer les interactions les plus importantes
important_interactions = X.columns[mi_scores > 0.1]
print(important_interactions)
Avec ce genre de script, vous optimisez votre feature engineering tout en gardant un œil sur la performance de votre modèle. Pour en savoir plus sur la sélection de features, vous pouvez consulter cet article ici.
Comment exploiter au mieux les données temporelles ?
Les données datetime sont souvent sous-exploitées, et pourtant elles contiennent des trésors d’informations. En extrayant les composantes essentielles, on peut améliorer significativement la performance de vos modèles de machine learning. Ce script s’attaque à la tâche ardue d’extraction des éléments temporels, en débusquant des patterns comme la saisonnalité, les cycles, et même les délais.
Voici ce que le script fait :
- Il extrait des composantes de base comme l’année, le mois, le jour et l’heure.
- Il crée des indicateurs dérivés tels que le jour de la semaine, le trimestre, et des flags pour les week-ends.
- Il calcule les différences de temps, comme le nombre de jours écoulés depuis une date de référence.
- Il gère les patterns cycliques à l’aide d’encodages sinusoïdaux et cosinus, permettant par exemple d’indiquer que décembre et janvier sont proches dans l’espace des caractéristiques.
- Il identifie les jours fériés et les événements spéciaux, ce qui peut être crucial pour des analyses de ventes ou d’activité.
Pour réaliser des encodages cycliques, le script utilise des formules simples. Prenons l’exemple du mois :
month_sin = sin((2 * pi * month) / 12)
month_cos = cos((2 * pi * month) / 12)
Ces transformations garantissent que les mois sont correctement représentés dans l’espace des caractéristiques, ce qui est vital pour des modèles qui apprennent des relations saisonnières.
Pour illustrer, imaginons que vous ayez un dataset avec des dates de vente. En appliquant ce script, vous pourriez enrichir votre dataset avec des colonnes supplémentaires telles que jour_de_la_semaine, mois_sin, et weekend_flag. Cela permettrait à votre modèle de mieux comprendre les tendances de vente selon les jours de la semaine ou la saisonnalité, augmentant ainsi la précision des prévisions.
En somme, exploiter correctement vos données datetime peut transformer vos analyses. Si vous cherchez à approfondir vos connaissances sur la manière d’optimiser vos processus, consultez ce guide sur l’ingénierie des prompts, qui pourrait vous donner des clés supplémentaires pour tirer le meilleur parti de vos données.
Comment sélectionner automatiquement les meilleures features ?
La sélection automatique des features est un atout majeur pour réduire le bruit et éviter le surapprentissage. Dans un monde où chaque donnée compte, savoir quelles caractéristiques garder peut faire toute la différence. Ce script fait le job en combinant plusieurs méthodes de sélection efficaces.
- Filtrage par variance : Cette étape élimine les features constantes ou presque constantes. En gros, si une feature ne varie pas beaucoup, elle n’apporte pas d’informations utiles. Pas la peine de la garder.
- Filtrage par corrélation : On retire les features redondantes. Si deux features sont hautement corrélées, on garde celle qui est la plus pertinente par rapport à la cible.
- Tests statistiques : On utilise des méthodes comme l’ANOVA, le chi carré et l’information mutuelle pour évaluer l’importance de chaque feature. Ces tests permettent de quantifier la relation entre chaque feature et la variable cible.
- Importance des arbres : Les modèles basés sur des arbres, comme les forêts aléatoires, fournissent des scores d’importance qui aident à identifier les features cruciales. Cela repose sur l’idée que certaines features contribuent plus que d’autres à la prédiction.
- Régularisation L1 : Cette technique pénalise les coefficients des features dans les modèles linéaires, ce qui pousse certains à zéro. Les features avec des coefficients proches de zéro sont souvent moins pertinentes.
- Élimination récursive : On entraîne le modèle plusieurs fois, en retirant les features les moins importantes à chaque itération. Cela permet de trouver le sous-ensemble optimal qui maximise les performances.
Après avoir appliqué ces étapes, le script combine les résultats en un score d’ensemble, offrant un ranking robuste des features. Cela signifie que vous obtenez une liste classée, facilitant la sélection des meilleures features pour entraîner votre modèle.
Voici un exemple de code Python qui illustre comment obtenir ce sous-ensemble optimal :
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
import pandas as pd
# Chargement des données
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target
# Entraînement d'un modèle
model = RandomForestClassifier()
model.fit(X, y)
# Sélection des features
selector = SelectFromModel(model, prefit=True)
X_selected = selector.transform(X)
print("Features sélectionnées : ", X.columns[selector.get_support()])
Ce code charge un ensemble de données, entraîne un modèle de forêt aléatoire, et sélectionne les features les plus pertinentes. C’est aussi simple que ça ! Utiliser un script de sélection automatique vous permet non seulement de gagner du temps, mais aussi d’améliorer la performance de vos modèles.
Prêt à transformer votre feature engineering avec ces scripts Python ?
Ces cinq scripts Python couvrent les étapes clés du feature engineering : encodage intelligent, transformation adaptée, interaction pertinente, extraction temporelle complète, et sélection automatisée. En les intégrant dans votre workflow, vous gagnez en efficacité, évitez les pièges manuels et maximisez les performances de vos modèles. Adopter ces outils, c’est garantir un travail rigoureux et un avantage compétitif dans vos projets data.
FAQ
Pourquoi le feature engineering est-il si important en machine learning ?
Comment éviter le surapprentissage lors de l’encodage des variables catégorielles ?
Quels types de transformations numériques sont les plus efficaces ?
Comment gérer les interactions entre un grand nombre de features ?
Quelle méthode de sélection de features est la plus fiable ?
A propos de l’auteur
Franck Scandolera est consultant et formateur expert en Analytics, Data, Automatisation et IA. Fort d’une expérience solide dans le développement d’applications IA et l’intégration des workflows métiers, il accompagne les entreprises à exploiter pleinement la data pour booster leurs performances. Responsable de l’agence webAnalyste et de l’organisme Formations Analytics, il partage ses savoirs techniques et stratégiques pour rendre la data accessible et opérationnelle.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
- Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
- Data Analyst & Analytics engineering : tracking avancé (GTM server, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
- Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
- Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.






