ПочатиПочніть безкоштовно

Кодування категоріальних стовпців 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())
Редагувати та запускати код