KNN-Imputation für kategoriale Werte
Sobald alle kategorialen Spalten im DataFrame in ordinale Werte umgewandelt sind, ist der DataFrame bereit für die Imputation. Das Imputieren mit statistischen Modellen wie K-Nearest Neighbors (KNN) liefert bessere Imputationen.
In dieser Übung wirst du
- die Funktion
KNN()ausfancyimputeverwenden, um die fehlenden Werte im ordinal kodierten DataFrameuserszu imputieren. - die ordinalen Werte mit der Methode
.inverse_transform()des Ordinalencoders wieder in ihre jeweiligen Kategorien zurückverwandeln.
Denk daran: ordinal_enc_dict speichert für jede Spalte den OrdinalEncoder() aus sklearn.
Der DataFrame users speichert die kodierten Werte (ordinale Werte) für jede Spalte.
Die Funktion KNN(), das Dictionary der OrdinalEncoder()s ordinal_enc_dict und der users DataFrame wurden bereits für dich geladen.
Diese Übung ist Teil des Kurses
<Kurs>Umgang mit fehlenden Daten in Python</Kurs>Übungsanweisungen
- Imputiere den DataFrame
usersmit der Methodefit_transform()vonKNN_imputer. Runde die transformierten Werte auf ganze Zahlen. - Iteriere über die Spalten in
users. - Wähle den
OrdinalEncoder()der Spalte ausordinal_enc_dictund führe.inverse_transform()auf das umgeformte Arrayreshapedaus.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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] = ___