Imputation des valeurs manquantes

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

De nombreux jeux de données du monde réel contiennent des valeurs manquantes, ce qui peut poser des problèmes lorsqu'on utilise des algorithmes d'apprentissage automatique qui supposent des données complètes et numériques. Dans de tels cas, il est important de traiter les valeurs manquantes de manière appropriée pour tirer le meilleur parti des données disponibles. Une stratégie courante est l'imputation, qui consiste à remplir les valeurs manquantes sur la base de la partie connue des données.

Dans ce tutoriel, nous allons explorer différentes stratégies d'imputation des valeurs manquantes à l'aide de scikit-learn, une bibliothèque populaire d'apprentissage automatique en Python.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/impute("Impute") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/impute -.-> lab-71131{{"Imputation des valeurs manquantes"}} ml/sklearn -.-> lab-71131{{"Imputation des valeurs manquantes"}} end

Importez les modules nécessaires

Tout d'abord, nous devons importer les modules requis de la bibliothèque scikit-learn. Nous utiliserons la classe SimpleImputer pour l'imputation de caractéristiques univariées et la classe IterativeImputer pour l'imputation de caractéristiques multivariées.

import numpy as np
from sklearn.impute import SimpleImputer, IterativeImputer

Imputation de caractéristiques univariées à l'aide de SimpleImputer

La classe SimpleImputer fournit des stratégies de base pour imputer les valeurs manquantes d'une manière univariée. Nous pouvons choisir parmi différentes stratégies, telles que remplacer les valeurs manquantes par une valeur constante ou utiliser la moyenne, la médiane ou la valeur la plus fréquente de chaque colonne pour imputer les valeurs manquantes.

Commencons par considérer la stratégie de moyenne. Nous allons créer une instance de SimpleImputer et l'ajuster sur nos données pour apprendre la stratégie d'imputation. Ensuite, nous pouvons utiliser la méthode transform pour imputer les valeurs manquantes en fonction de la stratégie apprise.

imp = SimpleImputer(strategy='mean')
X = [[1, 2], [np.nan, 3], [7, 6]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [7, 6]]
imputed_X_test = imp.transform(X_test)

Imputation de caractéristiques multivariées à l'aide d'IterativeImputer

La classe IterativeImputer est une approche plus avancée pour imputer les valeurs manquantes. Elle modélise chaque caractéristique avec des valeurs manquantes comme une fonction des autres caractéristiques et utilise cette estimation pour l'imputation. Elle apprend de manière itérative les relations entre les caractéristiques et impute les valeurs manquantes sur la base de ces relations.

imp = IterativeImputer()
X = [[1, 2], [3, 6], [4, 8], [np.nan, 3], [7, np.nan]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [np.nan, 6]]
imputed_X_test = imp.transform(X_test)

Imputation par voisins les plus proches à l'aide de KNNImputer

La classe KNNImputer fournit une imputation pour remplir les valeurs manquantes en utilisant l'approche des k plus proches voisins. Elle trouve les plus proches voisins pour chaque échantillon avec des valeurs manquantes et impute les valeurs manquantes des caractéristiques en fonction des valeurs des voisins.

from sklearn.impute import KNNImputer
nan = np.nan
X = [[1, 2, nan], [3, 4, 3], [nan, 6, 5], [8, 8, 7]]
imputer = KNNImputer(n_neighbors=2)
imputed_X = imputer.fit_transform(X)

Conserver le nombre de caractéristiques constant

Par défaut, les imputeurs de scikit-learn éliminent les colonnes ne contenant que des valeurs manquantes. Cependant, dans certains cas, il est nécessaire de conserver les caractéristiques vides pour maintenir la forme des données. Nous pouvons le faire en définissant le paramètre keep_empty_features sur True.

imputer = SimpleImputer(keep_empty_features=True)
X = np.array([[np.nan, 1], [np.nan, 2], [np.nan, 3]])
imputed_X = imputer.fit_transform(X)

Marquer les valeurs imputées à l'aide de MissingIndicator

Le transformateur MissingIndicator est utile pour indiquer la présence de valeurs manquantes dans un ensemble de données. Il peut être utilisé en conjonction avec l'imputation pour conserver des informations sur les valeurs qui ont été imputées. Ce transformateur renvoie une matrice binaire indiquant la présence de valeurs manquantes dans l'ensemble de données.

from sklearn.impute import MissingIndicator
X = np.array([[-1, -1, 1, 3], [4, -1, 0, -1], [8, -1, 1, 0]])
indicator = MissingIndicator()
mask_missing_values_only = indicator.fit_transform(X)

Sommaire

Dans ce tutoriel, nous avons appris différentes stratégies pour imputer les valeurs manquantes à l'aide de scikit-learn. Nous avons exploré l'imputation de caractéristiques univariées avec SimpleImputer, l'imputation de caractéristiques multivariées avec IterativeImputer, l'imputation par voisins les plus proches avec KNNImputer, la conservation du nombre de caractéristiques constant et le marquage des valeurs imputées avec MissingIndicator. Ces techniques peuvent être des outils précieux pour traiter les données manquantes et s'assurer que les algorithmes d'apprentissage automatique peuvent être appliqués à des ensembles de données incomplètes.