One-Hot Енкодер
У випадку з номінативними значеннями їх обробка є дещо складнішою.
Для порядкових даних, таких як оцінки користувачів від 'Terrible' до 'Great', кодування їх числами від 0 до 4 є доцільним, оскільки модель може врахувати притаманний порядок.
Натомість для ознаки на кшталт 'city' з п’ятьма унікальними категоріями кодування числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку доцільніше використовувати one-hot кодування, яке представляє категорії без ієрархії.
Для кодування номінативних даних використовується трансформер OneHotEncoder. Він створює окремий стовпець для кожного унікального значення. Для кожного рядка у відповідному стовпці встановлюється 1, а в інших — 0.
Те, що спочатку було 'NewYork', тепер має 1 у стовпці 'City_NewYork' та 0 в інших стовпцях City_.
Застосування OneHotEncoder до набору даних penguins. Номінативні ознаки: 'island' та 'sex'. Стовпець 'species' є цільовим і буде розглянутий окремо під час обговорення target encoding у наступному розділі.
123456import 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())
Щоб застосувати OneHotEncoder, ініціалізуйте об'єкт енкодера та передайте вибрані стовпці до методу .fit_transform(), аналогічно до інших трансформерів.
1234567891011import 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())
Метод .toarray() перетворює розріджену матрицю (sparse matrix), отриману з OneHotEncoder, у щільний масив NumPy. Щільні масиви явно відображають усі значення, що спрощує візуалізацію та обробку закодованих даних у DataFrame. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain what the output of the OneHotEncoder means?
How do I interpret the transformed data for the 'sex' and 'island' columns?
What should I do next after applying OneHotEncoder to these features?
Чудово!
Completion показник покращився до 3.13
One-Hot Енкодер
Свайпніть щоб показати меню
У випадку з номінативними значеннями їх обробка є дещо складнішою.
Для порядкових даних, таких як оцінки користувачів від 'Terrible' до 'Great', кодування їх числами від 0 до 4 є доцільним, оскільки модель може врахувати притаманний порядок.
Натомість для ознаки на кшталт 'city' з п’ятьма унікальними категоріями кодування числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку доцільніше використовувати one-hot кодування, яке представляє категорії без ієрархії.
Для кодування номінативних даних використовується трансформер OneHotEncoder. Він створює окремий стовпець для кожного унікального значення. Для кожного рядка у відповідному стовпці встановлюється 1, а в інших — 0.
Те, що спочатку було 'NewYork', тепер має 1 у стовпці 'City_NewYork' та 0 в інших стовпцях City_.
Застосування OneHotEncoder до набору даних penguins. Номінативні ознаки: 'island' та 'sex'. Стовпець 'species' є цільовим і буде розглянутий окремо під час обговорення target encoding у наступному розділі.
123456import 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())
Щоб застосувати OneHotEncoder, ініціалізуйте об'єкт енкодера та передайте вибрані стовпці до методу .fit_transform(), аналогічно до інших трансформерів.
1234567891011import 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())
Метод .toarray() перетворює розріджену матрицю (sparse matrix), отриману з OneHotEncoder, у щільний масив NumPy. Щільні масиви явно відображають усі значення, що спрощує візуалізацію та обробку закодованих даних у DataFrame. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.
Дякуємо за ваш відгук!