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.