Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Importera LabelEncoder från sklearn.preprocessing.
  • Fyll i saknade värden i kolumnen LotFrontage med 0 med hjälp av .fillna().
  • Skapa en boolesk mask för kategoriska kolumner. Det gör du genom att kontrollera om df.dtypes är lika med object.
  • 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ör le i 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())
Redigera och kör kod