НачатьНачать бесплатно

Кодирование категориальных столбцов I: LabelEncoder

Теперь, когда вы увидели, что нужно сделать для подготовки данных о жилье к работе с XGBoost, давайте пройдём этот процесс шаг за шагом.

Сначала нужно заполнить пропущенные значения — как вы уже заметили, столбец LotFrontage содержит много пропусков. Затем необходимо закодировать категориальные столбцы в наборе данных с помощью унитарного кодирования (one-hot encoding), чтобы представить их в числовом виде. Можете посмотреть это видео из курса Supervised Learning with scikit-learn для повторения основных идей.

Набор данных содержит пять категориальных столбцов: MSZoning, PavedDrive, Neighborhood, BldgType и HouseStyle. В scikit-learn есть функция LabelEncoder, которая преобразует значения в каждом категориальном столбце в целые числа. Потренируйтесь использовать её в этом упражнении.

Это упражнение является частью курса

Экстремальный градиентный бустинг с XGBoost

Посмотреть курс

Инструкции к упражнению

  • Импортируйте LabelEncoder из sklearn.preprocessing.
  • Заполните пропущенные значения в столбце LotFrontage нулями с помощью метода .fillna().
  • Создайте булеву маску для категориальных столбцов. Для этого проверьте, равны ли значения df.dtypes типу object.
  • Создайте объект LabelEncoder. Это делается так же, как и создание любого другого estimator'а в 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())
Редактировать и запускать код