Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transformador de Colunas | Pipelines
Introdução ao ML com Scikit-learn

bookTransformador 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'
)
Note
Nota

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'.

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.

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

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 features '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

Suggested prompts:

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

bookTransformador 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'
)
Note
Nota

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'.

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.

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

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 features '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