Кодування категоріальних стовпців I: LabelEncoder
Тепер, коли ви побачили, що потрібно зробити, щоб підготувати дані про житло для XGBoost, пройдімо процес крок за кроком.
Спочатку потрібно заповнити пропуски — як ви бачили раніше, у стовпці LotFrontage багато відсутніх значень. Далі потрібно закодувати всі категоріальні стовпці в наборі даних за допомогою one-hot кодування, щоб отримати числове подання. Для пригадування ідеї перегляньте це відео з курсу Supervised Learning with scikit-learn.
У даних є пʼять категоріальних стовпців: MSZoning, PavedDrive, Neighborhood, BldgType і HouseStyle. У scikit-learn є функція LabelEncoder, яка перетворює значення в кожному категоріальному стовпці на цілі числа. Тут ви попрактикуєтеся її використовувати.
Ця вправа є частиною курсу
Екстремальний градієнтний бустинг з XGBoost
Інструкції до вправи
- Імпортуйте
LabelEncoderзsklearn.preprocessing. - Заповніть пропущені значення у стовпці
LotFrontageнулем0за допомогою.fillna(). - Створіть булеву маску для категоріальних стовпців. Це можна зробити, перевіривши, чи дорівнюють типи
df.dtypesзначеннюobject. - Створіть обʼєкт
LabelEncoder. Зробіть це так само, як ви створюєте будь-який оцінювач scikit-learn. - Закодуйте всі категоріальні стовпці у цілі числа за допомогою
LabelEncoder(). Для цього скористайтеся методом.fit_transform()обʼєктаleу наданій лямбда-функції.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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())