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

Кодування категоріальних стовпців II: OneHotEncoder

Гаразд — ви вже закодували свої категоріальні стовпці чисельно. Можна переходити до пайплайнів і XGBoost? Ще ні! У категоріальних стовпцях цього набору даних немає природного порядку між значеннями. Наприклад: за допомогою LabelEncoder район Neighborhood CollgCr було закодовано як 5, Veenker — як 24, а Crawfor — як 6. Чи є Veenker «більшим», ніж Crawfor і CollgCr? Ні — і якщо дозволити моделі робити припущення про природний порядок, це може погіршити якість.

Отже, потрібен ще один крок: слід застосувати one-hot кодування, щоб створити бінарні або «дамі»-змінні. Це можна зробити за допомогою OneHotEncoder зі scikit-learn.

Ця вправа є частиною курсу

Екстремальний градієнтний бустинг з XGBoost

Переглянути курс

Інструкції до вправи

  • Імпортуйте OneHotEncoder з sklearn.preprocessing.
  • Створіть об'єкт OneHotEncoder з іменем ohe. Укажіть аргумент sparse=False.
  • Його методом .fit_transform() застосуйте OneHotEncoder до df і збережіть результат як df_encoded. Вивід буде масивом NumPy.
  • Виведіть перші 5 рядків df_encoded, а також розміри 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)
Редагувати та запускати код