Codificarea coloanelor categorice I: LabelEncoder
Acum că ai văzut ce trebuie făcut pentru a pregăti datele despre locuințe în vederea utilizării cu XGBoost, să parcurgem procesul pas cu pas.
În primul rând, va trebui să completezi valorile lipsă – după cum ai observat anterior, coloana LotFrontage are multe valori lipsă. Apoi, va trebui să codifici coloanele categorice din setul de date folosind codificarea one-hot, astfel încât să fie reprezentate numeric. Poți urmări acest videoclip din cursul Supervised Learning with scikit-learn pentru a-ți reîmprospăta noțiunile.
Setul de date conține cinci coloane categorice: MSZoning, PavedDrive, Neighborhood, BldgType și HouseStyle. Scikit-learn pune la dispoziție funcția LabelEncoder, care convertește valorile din fiecare coloană categorică în numere întregi. Vei exersa utilizarea acesteia în continuare.
Acest exercițiu face parte din cursul
Gradient Boosting Extrem cu XGBoost
Instrucțiuni pentru exercițiu
- Importă
LabelEncoderdinsklearn.preprocessing. - Completează valorile lipsă din coloana
LotFrontagecu0folosind.fillna(). - Creează o mască booleană pentru coloanele categorice. Poți face acest lucru verificând dacă
df.dtypeseste egal cuobject. - Creează un obiect
LabelEncoder. Procedează la fel ca atunci când instanțiezi orice estimator scikit-learn. - Codifică toate coloanele categorice ca numere întregi folosind
LabelEncoder(). În acest scop, aplică metoda.fit_transform()a obiectuluileîn funcția lambda furnizată.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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())