Kodning av kategoriska kolumner I: LabelEncoder
Nu när du har sett vad som behöver göras för att förbereda bostadsdata för XGBoost, går vi igenom processen steg för steg.
Först behöver du fylla i saknade värden – som du såg tidigare har kolumnen LotFrontage många saknade värden. Sedan behöver du koda eventuella kategoriska kolumner i datamängden med one-hot-kodning så att de representeras numeriskt. Du kan titta på den här videon från Supervised Learning with scikit-learn för en repetition av konceptet.
Data har fem kategoriska kolumner: MSZoning, PavedDrive, Neighborhood, BldgType och HouseStyle. Scikit-learn har en LabelEncoder-funktion som konverterar värdena i varje kategorisk kolumn till heltal. Här får du öva på att använda den.
Den här övningen är en del av kursen
Extreme Gradient Boosting med XGBoost
Övningsinstruktioner
- Importera
LabelEncoderfrånsklearn.preprocessing. - Fyll i saknade värden i kolumnen
LotFrontagemed0med hjälp av.fillna(). - Skapa en boolesk mask för kategoriska kolumner. Det gör du genom att kontrollera om
df.dtypesär lika medobject. - Skapa ett
LabelEncoder-objekt. Det går till på samma sätt som när du instansierar vilken scikit-learn-estimator som helst. - Koda alla kategoriska kolumner till heltal med hjälp av
LabelEncoder(). Använd metoden.fit_transform()förlei den angivna lambdafunktionen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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())