Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transformador de Colunas | Pipelines
Quizzes & Challenges
Quizzes
Challenges
/
Introdução ao Aprendizado de Máquina com Python

bookTransformador de Colunas

Ao chamar .fit_transform(X) em um Pipeline, cada transformador é aplicado a todas as colunas, o que nem sempre é desejável. Algumas colunas podem exigir codificadores diferentes — por exemplo, OrdinalEncoder para variáveis ordinais e OneHotEncoder para variáveis nominais. O ColumnTransformer resolve isso permitindo atribuir transformadores diferentes para colunas específicas usando o make_column_transformer.

O make_column_transformer aceita tuplas no formato (transformer, [columns]). Por exemplo, aplicar OrdinalEncoder à coluna 'education' e OneHotEncoder à coluna 'gender':

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

O parâmetro remainder controla o que acontece com as colunas não especificadas. Padrão: 'drop'. Para manter todas as outras colunas inalteradas, defina remainder='passthrough'.

Por exemplo, considere o arquivo exams.csv. Ele contém várias colunas nominais ('gender', 'race/ethnicity', 'lunch', 'test preparation course') e uma coluna ordinal, '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

Utilizando o ColumnTransformer, dados nominais podem ser transformados com o OneHotEncoder e dados ordinais com o OrdinalEncoder em uma única etapa.

12345678910111213
from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] 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

O ColumnTransformer é ele próprio um transformador, portanto fornece os métodos padrão .fit(), .fit_transform() e .transform().

question mark

Suponha que você tenha um conjunto de dados com as variáveis 'education', 'income', 'job'. O que acontecerá com a coluna 'income' após executar o código a seguir? (Observe que o argumento remainder não foi especificado)

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.13

bookTransformador de Colunas

Deslize para mostrar o menu

Ao chamar .fit_transform(X) em um Pipeline, cada transformador é aplicado a todas as colunas, o que nem sempre é desejável. Algumas colunas podem exigir codificadores diferentes — por exemplo, OrdinalEncoder para variáveis ordinais e OneHotEncoder para variáveis nominais. O ColumnTransformer resolve isso permitindo atribuir transformadores diferentes para colunas específicas usando o make_column_transformer.

O make_column_transformer aceita tuplas no formato (transformer, [columns]). Por exemplo, aplicar OrdinalEncoder à coluna 'education' e OneHotEncoder à coluna 'gender':

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

O parâmetro remainder controla o que acontece com as colunas não especificadas. Padrão: 'drop'. Para manter todas as outras colunas inalteradas, defina remainder='passthrough'.

Por exemplo, considere o arquivo exams.csv. Ele contém várias colunas nominais ('gender', 'race/ethnicity', 'lunch', 'test preparation course') e uma coluna ordinal, '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

Utilizando o ColumnTransformer, dados nominais podem ser transformados com o OneHotEncoder e dados ordinais com o OrdinalEncoder em uma única etapa.

12345678910111213
from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] 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

O ColumnTransformer é ele próprio um transformador, portanto fornece os métodos padrão .fit(), .fit_transform() e .transform().

question mark

Suponha que você tenha um conjunto de dados com as variáveis 'education', 'income', 'job'. O que acontecerá com a coluna 'income' após executar o código a seguir? (Observe que o argumento remainder não foi especificado)

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 2
some-alt