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

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

Итак, категориальные столбцы закодированы числовыми значениями. Можно ли теперь перейти к использованию конвейеров и XGBoost? Пока нет! В категориальных столбцах этого набора данных нет естественного порядка между значениями. Например: с помощью LabelEncoder район CollgCr (Neighborhood) был закодирован как 5, район Veenker — как 24, а Crawfor — как 6. Означает ли это, что Veenker «больше», чем Crawfor и CollgCr? Нет — и если позволить модели предполагать такой порядок, это может негативно сказаться на её качестве.

Поэтому необходим ещё один шаг: нужно применить унитарное кодирование (one-hot encoding), чтобы создать бинарные, или «фиктивные», переменные. Для этого воспользуйтесь классом OneHotEncoder из scikit-learn.

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

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

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

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

  • Импортируйте OneHotEncoder из sklearn.preprocessing.
  • Создайте объект OneHotEncoder с именем ohe. Укажите именованный аргумент sparse=False.
  • Применив метод .fit_transform(), преобразуйте df с помощью OneHotEncoder и сохраните результат в переменную df_encoded. Результатом будет массив NumPy.
  • Выведите первые 5 строк df_encoded, а затем форму (shape) объектов df и df_encoded, чтобы сравнить разницу.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Import OneHotEncoder
____

# Create OneHotEncoder: ohe
ohe = ____

# Apply OneHotEncoder to categorical columns - output is no longer a dataframe: df_encoded
df_encoded = ____

# Print first 5 rows of the resulting dataset - again, this will no longer be a pandas dataframe
print(df_encoded[:5, :])

# Print the shape of the original DataFrame
print(df.shape)

# Print the shape of the transformed array
print(df_encoded.shape)
Редактировать и запускать код