Imputarea valorilor categoriale cu KNN
După ce toate coloanele categoriale din DataFrame au fost convertite la valori ordinale, DataFrame-ul este pregătit pentru imputare. Imputarea cu modele statistice precum K-Nearest Neighbors (KNN) oferă rezultate mai precise.
În acest exercițiu vei:
- Folosi funcția
KNN()dinfancyimputepentru a imputa valorile lipsă din DataFrame-ul codat ordinalusers. - Converti valorile ordinale înapoi la categoriile corespunzătoare, folosind metoda
.inverse_transform()a codorului ordinal.
Reține că ordinal_enc_dict stochează câte un OrdinalEncoder() din sklearn pentru fiecare coloană, iar DataFrame-ul users conține valorile codate (valorile ordinale) pentru fiecare coloană.
Funcția KNN(), dicționarul de OrdinalEncoder()-uri ordinal_enc_dict și DataFrame-ul users au fost deja încărcate pentru tine.
Acest exercițiu face parte din cursul
Gestionarea datelor lipsă în Python
Instrucțiuni pentru exercițiu
- Imputează DataFrame-ul
usersfolosind metodafit_transform()a obiectuluiKNN_imputer. Valorile transformate sunt rotunjite pentru a obține numere întregi. - Iterează peste coloanele din
users. - Selectează
OrdinalEncoder()-ul coloanei dinordinal_enc_dictși aplică.inverse_transform()pe array-ul redimensionatreshaped.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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] = ___