Aan de slagGa gratis aan de slag

Categorische kolommen encoden I: LabelEncoder

Nu je hebt gezien wat er nodig is om de woningdata klaar te maken voor XGBoost, lopen we het proces stap voor stap door.

Eerst vul je ontbrekende waarden aan—zoals je eerder zag, bevat de kolom LotFrontage veel missende waarden. Daarna moet je alle categorische kolommen in de gegevensset numeriek encoden met one-hot encoding. Je kunt deze video uit Supervised Learning with scikit-learn bekijken voor een korte opfrissing.

De data bevat vijf categorische kolommen: MSZoning, PavedDrive, Neighborhood, BldgType en HouseStyle. Scikit-learn heeft een LabelEncoder-functie die de waarden in elke categorische kolom omzet naar gehele getallen. Je gaat hiermee hier oefenen.

Deze oefening maakt deel uit van de cursus

Extreme Gradient Boosting met XGBoost

Cursus bekijken

Oefeninstructies

  • Importeer LabelEncoder uit sklearn.preprocessing.
  • Vul ontbrekende waarden in de kolom LotFrontage aan met 0 met .fillna().
  • Maak een booleaanse mask voor categorische kolommen. Dit kan door te controleren of df.dtypes gelijk is aan object.
  • Maak een LabelEncoder-object. Dit doe je op dezelfde manier als waarop je een scikit-learn-estimator instantieert.
  • Encode alle categorische kolommen naar gehele getallen met LabelEncoder(). Gebruik hiervoor de .fit_transform()-methode van le in de meegeleverde lambda-functie.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Code bewerken en uitvoeren