Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Кодування Категоріальних Ознак | Основні Концепції
Кластерний Аналіз

bookКодування Категоріальних Ознак

Алгоритми кластеризації, такі як 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']]) 
Note
Примітка

Таке кодування слід використовувати лише для порядкових ознак, де важливий порядок категорій.

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']]) 
Note
Примітка

One-hot encoding не нав'язує порядок і підходить для номінативних ознак, але може збільшити розмірність даних.

question mark

Який метод кодування найкраще підходить для категоріальної ознаки, такої як 'country', зі значеннями "USA", "Canada" та "Germany", де немає природного порядку?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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

bookКодування Категоріальних Ознак

Свайпніть щоб показати меню

Алгоритми кластеризації, такі як 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']]) 
Note
Примітка

Таке кодування слід використовувати лише для порядкових ознак, де важливий порядок категорій.

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']]) 
Note
Примітка

One-hot encoding не нав'язує порядок і підходить для номінативних ознак, але може збільшити розмірність даних.

question mark

Який метод кодування найкраще підходить для категоріальної ознаки, такої як 'country', зі значеннями "USA", "Canada" та "Germany", де немає природного порядку?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2
some-alt