Transformador de Colunas
Olhando adiante, ao invocar o método .fit_transform(X)
em um objeto Pipeline
, cada transformador é aplicado ao conjunto completo de features em X
. No entanto, esse comportamento pode não ser sempre o desejado.
Por exemplo, pode não ser interessante codificar valores numéricos ou pode ser necessário aplicar transformadores diferentes para colunas específicas — como utilizar OrdinalEncoder
para features ordinais e OneHotEncoder
para features nominais.
O ColumnTransformer
resolve esse problema ao permitir que cada coluna seja tratada separadamente. Para criar um ColumnTransformer
, pode-se utilizar a função make_column_transformer
do módulo sklearn.compose
.
A função recebe como argumentos tuplas contendo o transformador e a lista de colunas às quais esse transformador deve ser aplicado.
Por exemplo, é possível criar um ColumnTransformer
que aplica o OrdinalEncoder
apenas à coluna 'education'
e o OneHotEncoder
apenas à coluna 'gender'
.
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']), remainder='passthrough'
)
O argumento remainder
especifica a ação a ser tomada com as colunas não mencionadas em make_column_transformer
(neste caso, colunas diferentes de 'gender'
e 'education'
).
Por padrão, está definido como 'drop'
, o que significa que quaisquer colunas não mencionadas serão removidas do conjunto de dados. Para incluir essas colunas sem alterações na saída, defina o remainder
como '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.
123456789101112131415import 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))
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
Can you explain what the `remainder='passthrough'` argument does?
How do I specify custom order for ordinal categories in `OrdinalEncoder`?
What does the output of `ct.fit_transform(df)` look like?
Awesome!
Completion rate improved to 3.13
Transformador de Colunas
Deslize para mostrar o menu
Olhando adiante, ao invocar o método .fit_transform(X)
em um objeto Pipeline
, cada transformador é aplicado ao conjunto completo de features em X
. No entanto, esse comportamento pode não ser sempre o desejado.
Por exemplo, pode não ser interessante codificar valores numéricos ou pode ser necessário aplicar transformadores diferentes para colunas específicas — como utilizar OrdinalEncoder
para features ordinais e OneHotEncoder
para features nominais.
O ColumnTransformer
resolve esse problema ao permitir que cada coluna seja tratada separadamente. Para criar um ColumnTransformer
, pode-se utilizar a função make_column_transformer
do módulo sklearn.compose
.
A função recebe como argumentos tuplas contendo o transformador e a lista de colunas às quais esse transformador deve ser aplicado.
Por exemplo, é possível criar um ColumnTransformer
que aplica o OrdinalEncoder
apenas à coluna 'education'
e o OneHotEncoder
apenas à coluna 'gender'
.
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']), remainder='passthrough'
)
O argumento remainder
especifica a ação a ser tomada com as colunas não mencionadas em make_column_transformer
(neste caso, colunas diferentes de 'gender'
e 'education'
).
Por padrão, está definido como 'drop'
, o que significa que quaisquer colunas não mencionadas serão removidas do conjunto de dados. Para incluir essas colunas sem alterações na saída, defina o remainder
como '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.
123456789101112131415import 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))
O ColumnTransformer
é ele próprio um transformador, portanto fornece os métodos padrão .fit()
, .fit_transform()
e .transform()
.
Obrigado pelo seu feedback!