Кодування Категоріальних Змінних
Категоріальні змінні — це ознаки у ваших даних, які представляють категорії, а не числові значення. Прикладами є кольори, такі як "red", "green", і "blue", або мітки, такі як "yes" і "no". Алгоритми машинного навчання потребують числових вхідних даних, тому перед використанням у моделях ці категоріальні змінні необхідно перетворити у числовий формат. Цей процес називається кодуванням, і він забезпечує можливість алгоритмам коректно інтерпретувати та навчатися на даних.
One-hot кодування створює новий бінарний стовпець для кожної категорії категоріальної змінної. Кожне спостереження отримує 1 у стовпці, що відповідає його категорії, і 0 в інших стовпцях.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Кодування міток призначає кожній унікальній категорії у змінній ціле число, перетворюючи текстові мітки на числа.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Порядкове кодування призначає впорядковані цілі значення категоріям на основі їх природного ранжування. Цей метод зберігає властивий порядок у порядкових категоріальних змінних, таких як рівні освіти ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Будьте уважні під час кодування категоріальних змінних. One-hot кодування може призвести до пастки фіктивних змінних — ситуації, коли ознаки сильно корелюють між собою, що може заплутати деякі моделі. Щоб уникнути цього, можна видалити одну з фіктивних колонок. Label кодування накладає порядкову залежність між категоріями, що може бути недоречним для номінальних даних.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 8.33
Кодування Категоріальних Змінних
Свайпніть щоб показати меню
Категоріальні змінні — це ознаки у ваших даних, які представляють категорії, а не числові значення. Прикладами є кольори, такі як "red", "green", і "blue", або мітки, такі як "yes" і "no". Алгоритми машинного навчання потребують числових вхідних даних, тому перед використанням у моделях ці категоріальні змінні необхідно перетворити у числовий формат. Цей процес називається кодуванням, і він забезпечує можливість алгоритмам коректно інтерпретувати та навчатися на даних.
One-hot кодування створює новий бінарний стовпець для кожної категорії категоріальної змінної. Кожне спостереження отримує 1 у стовпці, що відповідає його категорії, і 0 в інших стовпцях.
12345678910111213import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # One-hot encode the 'embarked' column embarked_encoded = pd.get_dummies(data["embarked"], prefix="embarked") # Concatenate with original dataset data = pd.concat([data, embarked_encoded], axis=1) print(data[["embarked", "embarked_C", "embarked_Q", "embarked_S"]].head())
Кодування міток призначає кожній унікальній категорії у змінній ціле число, перетворюючи текстові мітки на числа.
123456789101112import seaborn as sns import pandas as pd from sklearn.preprocessing import LabelEncoder # Load Titanic dataset data = sns.load_dataset("titanic") # Label encode the 'sex' column encoder = LabelEncoder() data["sex_encoded"] = encoder.fit_transform(data["sex"]) print(data[["sex", "sex_encoded"]].head())
Порядкове кодування призначає впорядковані цілі значення категоріям на основі їх природного ранжування. Цей метод зберігає властивий порядок у порядкових категоріальних змінних, таких як рівні освіти ("high school", "bachelor", "master", "doctorate").
123456789101112131415161718import seaborn as sns import pandas as pd # Load Titanic dataset data = sns.load_dataset("titanic") # Define the order of passenger classes: First < Second < Third class_order = ["First", "Second", "Third"] # Apply ordered categorical encoding data["class_encoded"] = pd.Categorical( data["class"], categories=class_order, ordered=True ).codes + 1 # +1 to make classes start from 1 instead of 0 # Display sample output print(data[["class", "class_encoded"]].head())
Будьте уважні під час кодування категоріальних змінних. One-hot кодування може призвести до пастки фіктивних змінних — ситуації, коли ознаки сильно корелюють між собою, що може заплутати деякі моделі. Щоб уникнути цього, можна видалити одну з фіктивних колонок. Label кодування накладає порядкову залежність між категоріями, що може бути недоречним для номінальних даних.
Дякуємо за ваш відгук!