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