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. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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. Розріджені матриці зберігають лише ненульові елементи, оптимізуючи використання пам'яті. Ви можете пропустити цей метод, щоб побачити різницю у виведенні.
Дякуємо за ваш відгук!