Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте One-Hot Енкодер | Попередня Обробка Даних Із Scikit-learn
Вступ до ML з Scikit-learn

bookOne-Hot Енкодер

Коли мова йде про номінативні значення, їх обробка є дещо складнішою.

Для порядкових даних, таких як оцінки користувачів від 'Жахливо' до 'Чудово', кодування їх числами від 0 до 4 є доречним, оскільки модель може врахувати притаманний порядок.

Натомість для ознаки на кшталт 'city' з п’ятьма унікальними категоріями кодування їх числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку кращим вибором є one-hot кодування, оскільки воно представляє категорії без натяку на ієрархію.

Для кодування номінативних даних використовується трансформер OneHotEncoder. Він створює стовпець для кожного унікального значення. Далі для кожного рядка у стовпці, що відповідає значенню цього рядка, встановлюється 1, а в інших — 0.

Те, що спочатку було 'NewYork', тепер має 1 у стовпці 'City_NewYork' та 0 в інших стовпцях з префіксом City_.

Застосування OneHotEncoder до набору даних penguins. Номінативні ознаки — це 'island' та 'sex'. Стовпець 'species' є цільовим і буде розглядатися окремо під час обговорення кодування цільової змінної у наступному розділі.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Щоб застосувати OneHotEncoder, ініціалізуйте об'єкт енкодера та передайте вибрані стовпці до методу .fit_transform(), аналогічно до інших трансформерів.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Примітка

Метод .toarray() перетворює розріджену матрицю (sparse matrix), отриману з OneHotEncoder, у щільний масив NumPy. Щільні масиви явно відображають усі значення, що спрощує візуалізацію та обробку закодованих даних у DataFrame. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.

question mark

OneHotEncoder створює нові стовпці. Це правильно?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how OneHotEncoder works in more detail?

What are the unique values in the 'island' and 'sex' columns?

How do I interpret the output of the OneHotEncoder?

Awesome!

Completion rate improved to 3.13

bookOne-Hot Енкодер

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

Коли мова йде про номінативні значення, їх обробка є дещо складнішою.

Для порядкових даних, таких як оцінки користувачів від 'Жахливо' до 'Чудово', кодування їх числами від 0 до 4 є доречним, оскільки модель може врахувати притаманний порядок.

Натомість для ознаки на кшталт 'city' з п’ятьма унікальними категоріями кодування їх числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку кращим вибором є one-hot кодування, оскільки воно представляє категорії без натяку на ієрархію.

Для кодування номінативних даних використовується трансформер OneHotEncoder. Він створює стовпець для кожного унікального значення. Далі для кожного рядка у стовпці, що відповідає значенню цього рядка, встановлюється 1, а в інших — 0.

Те, що спочатку було 'NewYork', тепер має 1 у стовпці 'City_NewYork' та 0 в інших стовпцях з префіксом City_.

Застосування OneHotEncoder до набору даних penguins. Номінативні ознаки — це 'island' та 'sex'. Стовпець 'species' є цільовим і буде розглядатися окремо під час обговорення кодування цільової змінної у наступному розділі.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Щоб застосувати OneHotEncoder, ініціалізуйте об'єкт енкодера та передайте вибрані стовпці до методу .fit_transform(), аналогічно до інших трансформерів.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Примітка

Метод .toarray() перетворює розріджену матрицю (sparse matrix), отриману з OneHotEncoder, у щільний масив NumPy. Щільні масиви явно відображають усі значення, що спрощує візуалізацію та обробку закодованих даних у DataFrame. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.

question mark

OneHotEncoder створює нові стовпці. Це правильно?

Select the correct answer

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

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

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

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