One-Hot Енкодер
Коли мова йде про номінативні значення, їх обробка є дещо складнішою.
Для порядкових даних, таких як оцінки користувачів від 'Жахливо' до 'Чудово', кодування їх числами від 0 до 4 є доречним, оскільки модель може врахувати притаманний порядок.
Натомість для ознаки на кшталт 'city'
з п’ятьма унікальними категоріями кодування їх числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку кращим вибором є one-hot кодування, оскільки воно представляє категорії без натяку на ієрархію.
Для кодування номінативних даних використовується трансформер OneHotEncoder
. Він створює стовпець для кожного унікального значення. Далі для кожного рядка у стовпці, що відповідає значенню цього рядка, встановлюється 1, а в інших — 0.
Те, що спочатку було 'NewYork'
, тепер має 1 у стовпці 'City_NewYork'
та 0 в інших стовпцях з префіксом City_
.
Застосування OneHotEncoder
до набору даних penguins. Номінативні ознаки — це 'island'
та 'sex'
. Стовпець 'species'
є цільовим і буде розглядатися окремо під час обговорення кодування цільової змінної у наступному розділі.
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 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
One-Hot Енкодер
Свайпніть щоб показати меню
Коли мова йде про номінативні значення, їх обробка є дещо складнішою.
Для порядкових даних, таких як оцінки користувачів від 'Жахливо' до 'Чудово', кодування їх числами від 0 до 4 є доречним, оскільки модель може врахувати притаманний порядок.
Натомість для ознаки на кшталт 'city'
з п’ятьма унікальними категоріями кодування їх числами від 0 до 4 помилково вказуватиме на наявність порядку. У такому випадку кращим вибором є one-hot кодування, оскільки воно представляє категорії без натяку на ієрархію.
Для кодування номінативних даних використовується трансформер OneHotEncoder
. Він створює стовпець для кожного унікального значення. Далі для кожного рядка у стовпці, що відповідає значенню цього рядка, встановлюється 1, а в інших — 0.
Те, що спочатку було 'NewYork'
, тепер має 1 у стовпці 'City_NewYork'
та 0 в інших стовпцях з префіксом City_
.
Застосування OneHotEncoder
до набору даних penguins. Номінативні ознаки — це 'island'
та 'sex'
. Стовпець 'species'
є цільовим і буде розглядатися окремо під час обговорення кодування цільової змінної у наступному розділі.
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. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.
Дякуємо за ваш відгук!