Imputación KNN de valores categóricos
Una vez que todas las columnas categóricas del DataFrame se han convertido a valores ordinales, el DataFrame está listo para imputarse. La imputación con modelos estadísticos como K-Nearest Neighbors (KNN) ofrece mejores resultados.
En este ejercicio, vas a:
- Usar la función
KNN()defancyimputepara imputar los valores faltantes en el DataFrameuserscodificado ordinalmente. - Convertir los valores ordinales de vuelta a sus categorías correspondientes usando el método
.inverse_transform()del codificador ordinal.
Recuerda que ordinal_enc_dict almacena el OrdinalEncoder() de sklearn para cada columna.
El DataFrame users almacena los valores codificados (valores ordinales) de cada columna.
La función KNN(), el diccionario de OrdinalEncoder()s ordinal_enc_dict y el DataFrame users ya se han cargado por ti.
Este ejercicio forma parte del curso
Cómo tratar datos faltantes en Python
Instrucciones del ejercicio
- Imputa el DataFrame
usersusando el métodofit_transform()deKNN_imputer. Redondea estos valores transformados para obtener enteros. - Itera sobre las columnas de
users. - Selecciona el
OrdinalEncoder()de la columna desdeordinal_enc_dicty realiza.inverse_transform()sobre el arrayreshaped(ya reformateado).
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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] = ___