OrdinalEncoder
Наступне питання, яке потрібно розглянути, — це категоріальні дані. Існує два основних типи категоріальних змінних.
Порядкові дані мають природний порядок, тоді як номінальні — ні. Завдяки цьому порядку категорії можна кодувати числами відповідно до їхнього ранжування.
Наприклад, стовпець 'rate'
зі значеннями 'Terrible', 'Bad', 'OK', 'Good' та 'Great' можна закодувати так:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Для кодування порядкових даних використовується OrdinalEncoder
. Він перетворює категорії на цілі числа, починаючи з 0.
OrdinalEncoder
застосовується так само, як і інші трансформери. Основна складність полягає у правильному зазначенні аргументу categories
.
Наприклад, розглянемо набір даних (не penguins), який містить стовпець 'education'
. Перший крок — перевірити його унікальні значення.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Необхідно створити впорядкований список категоріальних значень у діапазоні від 'HS-grad'
до 'Doctorate'
.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Під час перетворення декількох ознак за допомогою OrdinalEncoder
категорії для кожного стовпця мають бути явно вказані. Це здійснюється через аргумент categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Яке твердження найкраще описує використання OrdinalEncoder
для обробки категоріальних даних у наборі даних?
2. Припустимо, у вас є категоріальний стовпець з назвою 'Color'
. Чи доцільно використовувати OrdinalEncoder
для кодування його значень?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.13
OrdinalEncoder
Свайпніть щоб показати меню
Наступне питання, яке потрібно розглянути, — це категоріальні дані. Існує два основних типи категоріальних змінних.
Порядкові дані мають природний порядок, тоді як номінальні — ні. Завдяки цьому порядку категорії можна кодувати числами відповідно до їхнього ранжування.
Наприклад, стовпець 'rate'
зі значеннями 'Terrible', 'Bad', 'OK', 'Good' та 'Great' можна закодувати так:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Для кодування порядкових даних використовується OrdinalEncoder
. Він перетворює категорії на цілі числа, починаючи з 0.
OrdinalEncoder
застосовується так само, як і інші трансформери. Основна складність полягає у правильному зазначенні аргументу categories
.
Наприклад, розглянемо набір даних (не penguins), який містить стовпець 'education'
. Перший крок — перевірити його унікальні значення.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Необхідно створити впорядкований список категоріальних значень у діапазоні від 'HS-grad'
до 'Doctorate'
.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Під час перетворення декількох ознак за допомогою OrdinalEncoder
категорії для кожного стовпця мають бути явно вказані. Це здійснюється через аргумент categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Яке твердження найкраще описує використання OrdinalEncoder
для обробки категоріальних даних у наборі даних?
2. Припустимо, у вас є категоріальний стовпець з назвою 'Color'
. Чи доцільно використовувати OrdinalEncoder
для кодування його значень?
Дякуємо за ваш відгук!