Transformador 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'
)
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'.
12345import 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())
Utilizando o ColumnTransformer, dados nominais podem ser transformados com o OneHotEncoder e dados ordinais com o OrdinalEncoder em uma única etapa.
12345678910111213from 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))
O ColumnTransformer é ele próprio um transformador, portanto fornece os métodos padrão .fit(), .fit_transform() e .transform().
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.13
Transformador 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'
)
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'.
12345import 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())
Utilizando o ColumnTransformer, dados nominais podem ser transformados com o OneHotEncoder e dados ordinais com o OrdinalEncoder em uma única etapa.
12345678910111213from 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))
O ColumnTransformer é ele próprio um transformador, portanto fornece os métodos padrão .fit(), .fit_transform() e .transform().
Obrigado pelo seu feedback!