Comment gérer les données manquantes avec le module Imputer de Scikit-learn

Comment gérer les données manquantes avec le module Imputer de Scikit-learn

kdn-sklearn-series-header-1 Comment gérer les données manquantes avec le module Imputer de Scikit-learn NEWS
Image de l’éditeur | À mi-parcours et Canva

Apprenons à utiliser l’ordinateur de Scikit-learn pour gérer les données manquantes.

Préparation

Assurez-vous que Numpy, Pandas et Scikit-Learn sont installés dans votre environnement. Sinon, vous pouvez les installer via pip en utilisant le code suivant :

pip install numpy pandas scikit-learn

Ensuite, nous pouvons importer les packages dans votre environnement :

import numpy as np
import pandas as pd
import sklearn
from sklearn.experimental import enable_iterative_imputer

Gérer les données manquantes avec Imputer

Un ordinateur scikit-Learn est une classe utilisée pour remplacer les données manquantes par certaines valeurs. Il peut rationaliser votre processus de prétraitement des données. Nous explorerons plusieurs stratégies pour gérer les données manquantes.

Créons un exemple de données pour notre exemple :

sample_data = {'First': [1, 2, 3, 4, 5, 6, 7, np.nan,9], 'Second': [np.nan, 2, 3, 4, 5, 6, np.nan, 8,9]}
df = pd.DataFrame(sample_data)
print(df)
    First  Second
0    1.0     NaN
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     NaN
7    NaN     8.0
8    9.0     9.0

Vous pouvez remplir les valeurs manquantes des colonnes avec Scikit-Learn Simple Imputer en utilisant la moyenne de la colonne respective.

    First  Second
0   1.00    5.29
1   2.00    2.00
2   3.00    3.00
3   4.00    4.00
4   5.00    5.00
5   6.00    6.00
6   7.00    5.29
7   4.62    8.00
8   9.00    9.00

A noter, nous arrondissons le résultat à 2 décimales.

Il est également possible d’imputer les données manquantes avec Median à l’aide de Simple Imputer.

imputer = sklearn.SimpleImputer(strategy='median')
df_imputed = round(pd.DataFrame(imputer.fit_transform(df), columns=df.columns),2)

print(df_imputed)
   First  Second
0    1.0     5.0
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     5.0
7    4.5     8.0
8    9.0     9.0

L’approche de l’imputateur moyenne et médiane est simple, mais elle peut fausser la distribution des données et créer un biais dans une relation entre les données.

Il est également possible d’utiliser un imputeur K-NN pour compléter les données manquantes en utilisant l’approche du voisin le plus proche.

knn_imputer = sklearn.KNNImputer(n_neighbors=2)
knn_imputed_data = knn_imputer.fit_transform(df)
knn_imputed_df = pd.DataFrame(knn_imputed_data, columns=df.columns)

print(knn_imputed_df)
    First  Second
0    1.0     2.5
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     5.5
7    7.5     8.0
8    9.0     9.0

L’ordinateur KNN utiliserait la moyenne ou la médiane des valeurs du voisin à partir du k voisins les plus proches.

Enfin, il existe la méthodologie Iterative Impute, qui repose sur la modélisation de chaque caractéristique avec des valeurs manquantes en fonction d’autres caractéristiques. Comme l’indique cet article, il s’agit d’une fonctionnalité expérimentale, nous devons donc l’activer au départ.

iterative_imputer = IterativeImputer(max_iter=10, random_state=0)
iterative_imputed_data = iterative_imputer.fit_transform(df)
iterative_imputed_df = round(pd.DataFrame(iterative_imputed_data, columns=df.columns),2)

print(iterative_imputed_df)
    First  Second
0    1.0     1.0
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     7.0
7    8.0     8.0
8    9.0     9.0

Si vous pouvez utiliser correctement l’ordinateur, cela pourrait contribuer à améliorer votre projet de science des données.

Ressources supplémentaires

Cornellius Yudha Wijaya est directeur adjoint de la science des données et rédacteur de données. Tout en travaillant à temps plein chez Allianz Indonesia, il aime partager des conseils sur Python et les données via les réseaux sociaux et la rédaction. Cornellius écrit sur une variété de sujets liés à l’IA et à l’apprentissage automatique.

Source