Кодування Категоріальних Ознак
Алгоритми кластеризації, такі як 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 кодування
One-hot кодування перетворює номінативні (невпорядковані) категорії у бінарні стовпці, де кожна категорія стає новим стовпцем. Для ознаки з 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']])
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
What is the difference between ordinal and one-hot encoding?
When should I use ordinal encoding instead of one-hot encoding?
Can you explain why one-hot encoding increases data dimensionality?
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 кодування
One-hot кодування перетворює номінативні (невпорядковані) категорії у бінарні стовпці, де кожна категорія стає новим стовпцем. Для ознаки з 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']])
Дякуємо за ваш відгук!