Feature Selection
La Feature Selection (sélection des variables pertinentes) est un processus qui consiste à choisir un sous-ensemble des caractéristiques (ou variables) les plus significatives d’un jeu de données pour améliorer les performances d’un modèle d’apprentissage automatique. Cela permet de réduire la complexité du modèle, d’éviter le surapprentissage (overfitting), d’améliorer l’interprétabilité du modèle et de réduire les coûts computationnels. La sélection des variables peut se faire par différentes méthodes telles que : Méthodes filtrantes : elles évaluent l’importance des variables indépendamment du modèle, en utilisant des tests statistiques (comme le chi-carré, la corrélation, etc.). Méthodes wrapper : elles évaluent la performance du modèle en utilisant différentes combinaisons de variables et choisissent celles qui optimisent la performance. Méthodes imbriquées : elles intègrent la sélection des variables directement dans le processus d’apprentissage du modèle, comme dans les algorithmes Lasso (régression) ou les arbres de décision. La feature selection permet donc de simplifier les modèles, améliorer leur efficacité et leur précision tout en réduisant le bruit des données.
Fonctions :
-
SelectKBest()
SelectKBest est une méthode de sélection de variables qui choisit les k meilleures caractéristiques en fonction d'un test statistique.
Importation :
from sklearn.feature_selection import SelectKBest, f_regression
Attributs :
Paramètre Description score_func
Fonction statistique utilisée (ex: f_regression
,chi2
,mutual_info_classif
)k
Nombre de caractéristiques à sélectionner fit(X, y)
Entraîne le sélecteur sur les données transform(X)
Applique la sélection sur les données Exemple de code :
from sklearn.feature_selection import SelectKBest, f_regression import pandas as pd import numpy as np # Création d'un DataFrame avec des variables aléatoires np.random.seed(42) X = pd.DataFrame(np.random.rand(100, 15), columns=[f'feature_{i}' for i in range(15)]) y = np.random.rand(100) # Variable cible # Sélection des 10 meilleures variables selector = SelectKBest(score_func=f_regression, k=10) X_selected = selector.fit_transform(X, y) # Affichage des variables sélectionnées selected_features = X.columns[selector.get_support()] print("Variables sélectionnées :", selected_features)
Explication du code :
Import des bibliothèques
from sklearn.feature_selection import SelectKBest, f_regression
Cette ligne importe la classe
SelectKBest
ainsi que la fonction de scoringf_regression
depuis le modulesklearn.feature_selection
.SelectKBest
permet de sélectionner automatiquement les k meilleures variables explicatives selon un critère donné, icif_regression
.import pandas as pd
import numpy as np
Ces deux lignes importent respectivement les bibliothèques
pandas
etnumpy
, renommées ici enpd
etnp
pour simplifier leur utilisation.Création d'un DataFrame avec des variables aléatoires
np.random.seed(42)
fixe la graine aléatoire afin d’assurer la reproductibilité des résultats.X = pd.DataFrame(np.random.rand(100, 15), columns=[f'feature_{i}' for i in range(15)])
crée un DataFrame contenant 100 lignes et 15 colonnes nomméesfeature_0
àfeature_14
avec des valeurs aléatoires.y = np.random.rand(100)
génère un vecteur cible aléatoire de 100 valeurs.Sélection des 10 meilleures variables
selector = SelectKBest(score_func=f_regression, k=10)
instancie un sélecteur avec la méthodef_regression
pour choisir les 10 meilleures variables.X_selected = selector.fit_transform(X, y)
applique la sélection et retourne un nouveau tableau contenant uniquement les variables retenues.Affichage des variables sélectionnées
selected_features = X.columns[selector.get_support()]
utilise un masque booléen pour extraire les noms des colonnes sélectionnées.print("Variables sélectionnées :", selected_features)
affiche la liste des variables choisies par la méthodeSelectKBest
.