Função fit_transform

O método ColumnTransformer.fit_transform é uma função do módulo sklearn.compose que permite realizar transformações específicas em colunas selecionadas de um conjunto de dados. Quando aplicado em conjunto com o One Hot Encoder, ele possibilita a conversão de atributos categóricos em valores numéricos binários.

Sintaxe

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
 
ct = ColumnTransformer(
    transformers=[('encoder', OneHotEncoder(), lista_colunas_categoricas)],
    remainder='passthrough'
)
 
X_transformed = ct.fit_transform(X)

Parâmetros:

  • transformers: Recebe uma lista de tuplas, onde cada tupla contém um nome para a transformação (‘encoder’ neste caso), o objeto do transformador (OneHotEncoder)e por fim a lista de colunas que devem passar pela transformação.

  • remainder: Determina como as colunas não especificadas na transformação serão tratadas. Neste caso, passthrough significa que essas colunas não serão alteradas e serão mantidas no conjunto de dados resultante.

Exemplo

import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
 
# Cria um DataFrame de exemplo
data = {
    'cor': ['vermelho', 'verde', 'azul', 'vermelho', 'azul'],
    'tamanho': ['grande', 'médio', 'médio', 'pequeno', 'grande'],
    'preco': [100, 50, 75, 30, 90]
}
df = pd.DataFrame(data)
 
# Seleciona as colunas categóricas para transformação
lista_colunas_categoricas = ['cor', 'tamanho']
 
# Cria o ColumnTransformer e aplica o One Hot Encoder nas colunas categóricas
ct = ColumnTransformer(
    transformers=[('encoder', OneHotEncoder(), lista_colunas_categoricas)],
    remainder='passthrough'
)
 
X_transformed = ct.fit_transform(df)
 
# Exibe o resultado
print(X_transformed)

Saída:

[[1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 100]
 [0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 50]
 [0. 0. 1. 0. 1. 0. 1. 0. 0. 0. 75]
 [1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 30]
 [0. 0. 1. 0. 0. 0. 0. 1. 0. 1. 90]]

No exemplo acima, temos um DataFrame com três colunas: ‘cor’, ‘tamanho’ e ‘preco’. Utilizamos o ColumnTransformer em conjunto com o One Hot Encoder para transformar as colunas categóricas ‘cor’ e ‘tamanho’ em valores numéricos binários, enquanto mantemos a coluna ‘preco’ sem alterações.

O One Hot Encoder criou novas colunas binárias para cada categoria única nas colunas ‘cor’ e ‘tamanho’, resultando em uma matriz numérica com a representação das categorias em formato binário. Essa abordagem é útil para que modelos de aprendizado de máquina possam trabalhar com atributos categóricos de forma adequada.