Imputation KNN de valeurs catégorielles
Une fois que toutes les colonnes catégorielles du DataFrame ont été converties en valeurs ordinales, le DataFrame est prêt à être imputé. L’imputation à l’aide de modèles statistiques comme K-Nearest Neighbors (KNN) fournit de meilleurs résultats.
Dans cet exercice, vous allez :
- Utiliser la fonction
KNN()defancyimputepour imputer les valeurs manquantes dans le DataFrame encodé ordinalementusers. - Reconvertir les valeurs ordinales en leurs catégories respectives à l’aide de la méthode
.inverse_transform()de l’encodeur ordinal.
Rappel : ordinal_enc_dict stocke le OrdinalEncoder() de sklearn pour chaque colonne.
Le DataFrame users stocke les valeurs encodées (valeurs ordinales) pour chaque colonne.
La fonction KNN(), le dictionnaire d’OrdinalEncoder() ordinal_enc_dict et le DataFrame users ont déjà été chargés pour vous.
Cet exercice fait partie du cours
Gérer les données manquantes en Python
Instructions
- Imputez le DataFrame
usersà l’aide de la méthodefit_transform()deKNN_imputer. Arrondissez les valeurs transformées pour obtenir des entiers. - Itérez sur les colonnes de
users. - Sélectionnez l’
OrdinalEncoder()de la colonne depuisordinal_enc_dictet appliquez.inverse_transform()sur le tableau redimensionnéreshaped.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create KNN imputer
KNN_imputer = KNN()
# Impute 'users' DataFrame. It is rounded to get integer values
users_KNN_imputed.iloc[:, :] = np.round(___)
# Loop over the column names in 'users'
for col_name in ___:
# Reshape the column data
reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1)
# Select the column's Encoder and perform inverse transform on 'reshaped'
users_KNN_imputed[col_name] = ___