Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Колонний Трансформер | Конвеєри
Вступ до ML з Використанням Scikit-learn

bookКолонний Трансформер

Дивлячись наперед, коли ви викликаєте метод .fit_transform(X) для об'єкта Pipeline, він застосовує кожен трансформер до всього набору ознак у X. Однак така поведінка може бути не завжди бажаною.

Наприклад, можливо, ви не хочете кодувати числові значення або вам потрібно застосувати різні трансформери до певних стовпців — наприклад, використовувати OrdinalEncoder для порядкових ознак і OneHotEncoder для номінативних ознак.

ColumnTransformer вирішує цю проблему, дозволяючи обробляти кожен стовпець окремо. Для створення ColumnTransformer можна скористатися функцією make_column_transformer з модуля sklearn.compose.

Функція приймає як аргументи кортежі з трансформером і списком стовпців, до яких цей трансформер має бути застосований.

Наприклад, можна створити ColumnTransformer, який застосовує OrdinalEncoder лише до стовпця 'education', а OneHotEncoder — лише до стовпця 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)

Наприклад, ми використаємо файл exams.csv, який містить номінативні стовпці ('gender', 'race/ethnicity', 'lunch', 'test preparation course'). Також він містить порядковий стовпець 'parental level of education'.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
copy

За допомогою ColumnTransformer можна одночасно трансформувати номінальні дані за допомогою OneHotEncoder та порядкові дані за допомогою OrdinalEncoder в один крок.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
copy

Як і слід очікувати, ColumnTransformer є трансформером, тому містить усі необхідні методи для трансформера, такі як .fit(), .fit_transform() та .transform().

question mark

Припустимо, у вас є набір даних із ознаками 'education', 'income', 'job'. Що станеться зі стовпцем 'income' після виконання наступного коду? (Зверніть увагу, що аргумент remainder не вказано)

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.13

bookКолонний Трансформер

Свайпніть щоб показати меню

Дивлячись наперед, коли ви викликаєте метод .fit_transform(X) для об'єкта Pipeline, він застосовує кожен трансформер до всього набору ознак у X. Однак така поведінка може бути не завжди бажаною.

Наприклад, можливо, ви не хочете кодувати числові значення або вам потрібно застосувати різні трансформери до певних стовпців — наприклад, використовувати OrdinalEncoder для порядкових ознак і OneHotEncoder для номінативних ознак.

ColumnTransformer вирішує цю проблему, дозволяючи обробляти кожен стовпець окремо. Для створення ColumnTransformer можна скористатися функцією make_column_transformer з модуля sklearn.compose.

Функція приймає як аргументи кортежі з трансформером і списком стовпців, до яких цей трансформер має бути застосований.

Наприклад, можна створити ColumnTransformer, який застосовує OrdinalEncoder лише до стовпця 'education', а OneHotEncoder — лише до стовпця 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)

Наприклад, ми використаємо файл exams.csv, який містить номінативні стовпці ('gender', 'race/ethnicity', 'lunch', 'test preparation course'). Також він містить порядковий стовпець 'parental level of education'.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
copy

За допомогою ColumnTransformer можна одночасно трансформувати номінальні дані за допомогою OneHotEncoder та порядкові дані за допомогою OrdinalEncoder в один крок.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
copy

Як і слід очікувати, ColumnTransformer є трансформером, тому містить усі необхідні методи для трансформера, такі як .fit(), .fit_transform() та .transform().

question mark

Припустимо, у вас є набір даних із ознаками 'education', 'income', 'job'. Що станеться зі стовпцем 'income' після виконання наступного коду? (Зверніть увагу, що аргумент remainder не вказано)

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 2
some-alt