Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Automatizando o Pré-Processamento com Pipelines | Engenharia de Atributos para Aprendizado de Máquina
Pré-Processamento de Dados e Engenharia de Features

bookAutomatizando o Pré-Processamento com Pipelines

Automatize o pré-processamento e a engenharia de atributos com pipelines do scikit-learn para garantir resultados de aprendizado de máquina consistentes e reprodutíveis. Os pipelines permitem encadear etapas como normalização, codificação e seleção de atributos, assegurando que cada transformação ocorra sempre na mesma ordem.

Para construir um pipeline no scikit-learn, defina uma lista de etapas, onde cada etapa é uma tupla contendo um nome único para a etapa (como string) e um objeto transformador (como StandardScaler ou SelectKBest). Por exemplo:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Em seguida, passe essa lista para o objeto Pipeline:

pipeline = Pipeline(steps)

O pipeline aplica cada transformador em ordem, passando a saída de uma etapa como entrada para a próxima. Essa abordagem não só economiza tempo, mas também reduz o risco de vazamento de dados, tornando seus experimentos mais confiáveis e fáceis de reproduzir.

Utilizando ColumnTransformer para subconjuntos de atributos

Com o ColumnTransformer, é possível aplicar diferentes pipelines de pré-processamento a diferentes subconjuntos de atributos em seus dados. Por exemplo:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Isso permite construir um pipeline único e unificado que trata corretamente tanto dados numéricos quanto categóricos, mantendo o código de pré-processamento organizado e garantindo que cada transformação seja aplicada às colunas corretas.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Nota

Integrar o pré-processamento ao pipeline de treinamento garante transformações consistentes e ajuda a prevenir vazamento de dados tanto durante o treinamento quanto na predição.

question mark

Qual das alternativas a seguir é uma vantagem fundamental do uso de pipelines do sklearn para pré-processamento e engenharia de atributos?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3

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 how SelectKBest chooses the top features in this pipeline?

What would happen if I changed the value of k in SelectKBest?

How can I add a classifier to this pipeline after feature selection?

Awesome!

Completion rate improved to 8.33

bookAutomatizando o Pré-Processamento com Pipelines

Deslize para mostrar o menu

Automatize o pré-processamento e a engenharia de atributos com pipelines do scikit-learn para garantir resultados de aprendizado de máquina consistentes e reprodutíveis. Os pipelines permitem encadear etapas como normalização, codificação e seleção de atributos, assegurando que cada transformação ocorra sempre na mesma ordem.

Para construir um pipeline no scikit-learn, defina uma lista de etapas, onde cada etapa é uma tupla contendo um nome único para a etapa (como string) e um objeto transformador (como StandardScaler ou SelectKBest). Por exemplo:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Em seguida, passe essa lista para o objeto Pipeline:

pipeline = Pipeline(steps)

O pipeline aplica cada transformador em ordem, passando a saída de uma etapa como entrada para a próxima. Essa abordagem não só economiza tempo, mas também reduz o risco de vazamento de dados, tornando seus experimentos mais confiáveis e fáceis de reproduzir.

Utilizando ColumnTransformer para subconjuntos de atributos

Com o ColumnTransformer, é possível aplicar diferentes pipelines de pré-processamento a diferentes subconjuntos de atributos em seus dados. Por exemplo:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Isso permite construir um pipeline único e unificado que trata corretamente tanto dados numéricos quanto categóricos, mantendo o código de pré-processamento organizado e garantindo que cada transformação seja aplicada às colunas corretas.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Nota

Integrar o pré-processamento ao pipeline de treinamento garante transformações consistentes e ajuda a prevenir vazamento de dados tanto durante o treinamento quanto na predição.

question mark

Qual das alternativas a seguir é uma vantagem fundamental do uso de pipelines do sklearn para pré-processamento e engenharia de atributos?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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