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 для кодування його значень?
Дякуємо за ваш відгук!