LoslegenKostenlos starten

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

  1. die Funktion KNN() aus fancyimpute verwenden, um die fehlenden Werte im ordinal kodierten DataFrame users zu imputieren.
  2. 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>
Kurs ansehen

Übungsanweisungen

  • Imputiere den DataFrame users mit der Methode fit_transform() von KNN_imputer. Runde die transformierten Werte auf ganze Zahlen.
  • Iteriere über die Spalten in users.
  • Wähle den OrdinalEncoder() der Spalte aus ordinal_enc_dict und führe .inverse_transform() auf das umgeformte Array reshaped aus.

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] = ___
Code bearbeiten und ausführen