Кодування Категоріальних Ознак
Алгоритми кластеризації, такі як K-means, потребують числових даних. Категоріальні ознаки необхідно перетворити у числову форму за допомогою кодування. Ви ознайомитеся з порядковим та one-hot кодуванням.
Порядкове кодування
Порядкове кодування перетворює впорядковані категорії у числові значення, зберігаючи їх ранг. Наприклад, порядкове кодування стовпця 'education_level'
перетворить його значення з "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
на 0
, 1
, 2
, 3
.
Це передбачає значущу числову різницю між закодованими значеннями, що не завжди є коректним.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Таке кодування слід використовувати лише для порядкових ознак, де важливий порядок категорій.
One-Hot Encoding
One-hot encoding перетворює номінативні (безпорядкові) категорії у бінарні стовпці, де кожна категорія стає новим стовпцем. Для ознаки з n
категоріями зазвичай створюється n
стовпців — один стовпець містить 1
для відповідної категорії, а інші — 0
. Однак для уникнення надмірності достатньо лише n-1
стовпців.
Наприклад, стовпець 'color'
зі значеннями 'red'
, 'blue'
та 'green'
можна закодувати лише двома стовпцями: 'color_red'
та 'color_blue'
. Якщо у рядку обидва значення дорівнюють 0
, це означає, що колір — 'green'
. Видалення одного стовпця дозволяє уникнути надмірності.
Видалення надлишкового стовпця задається через drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
One-hot encoding не нав'язує порядок і підходить для номінативних ознак, але може збільшити розмірність даних.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain the difference between ordinal and one-hot encoding in more detail?
When should I use ordinal encoding versus one-hot encoding?
Can you give more examples of categorical features and how to encode them?
Awesome!
Completion rate improved to 2.94
Кодування Категоріальних Ознак
Свайпніть щоб показати меню
Алгоритми кластеризації, такі як K-means, потребують числових даних. Категоріальні ознаки необхідно перетворити у числову форму за допомогою кодування. Ви ознайомитеся з порядковим та one-hot кодуванням.
Порядкове кодування
Порядкове кодування перетворює впорядковані категорії у числові значення, зберігаючи їх ранг. Наприклад, порядкове кодування стовпця 'education_level'
перетворить його значення з "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
на 0
, 1
, 2
, 3
.
Це передбачає значущу числову різницю між закодованими значеннями, що не завжди є коректним.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Таке кодування слід використовувати лише для порядкових ознак, де важливий порядок категорій.
One-Hot Encoding
One-hot encoding перетворює номінативні (безпорядкові) категорії у бінарні стовпці, де кожна категорія стає новим стовпцем. Для ознаки з n
категоріями зазвичай створюється n
стовпців — один стовпець містить 1
для відповідної категорії, а інші — 0
. Однак для уникнення надмірності достатньо лише n-1
стовпців.
Наприклад, стовпець 'color'
зі значеннями 'red'
, 'blue'
та 'green'
можна закодувати лише двома стовпцями: 'color_red'
та 'color_blue'
. Якщо у рядку обидва значення дорівнюють 0
, це означає, що колір — 'green'
. Видалення одного стовпця дозволяє уникнути надмірності.
Видалення надлишкового стовпця задається через drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
One-hot encoding не нав'язує порядок і підходить для номінативних ознак, але може збільшити розмірність даних.
Дякуємо за ваш відгук!