Introdução
Este laboratório é um guia passo a passo sobre como construir e exibir pipelines no Scikit-Learn.
Dicas da Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para praticar.
Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.
Construindo um Pipeline Simples com uma Etapa de Pré-processamento e um Classificador
Neste passo, construiremos um pipeline simples com uma etapa de pré-processamento e um classificador, e exibiremos sua representação visual.
Primeiro, importamos os módulos necessários:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn import set_config
Em seguida, definimos as etapas do pipeline:
steps = [
("preprocessing", StandardScaler()),
("classifier", LogisticRegression()),
]
Então, criamos o pipeline:
pipe = Pipeline(steps)
Finalmente, exibimos a representação visual do pipeline:
set_config(display="diagram")
pipe
Construindo um Pipeline com Múltiplas Etapas de Pré-processamento e um Classificador
Neste passo, construiremos um pipeline com múltiplas etapas de pré-processamento e um classificador, e exibiremos sua representação visual.
Primeiro, importamos os módulos necessários:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import LogisticRegression
Em seguida, definimos as etapas do pipeline:
steps = [
("standard_scaler", StandardScaler()),
("polynomial", PolynomialFeatures(degree=3)),
("classifier", LogisticRegression(C=2.0)),
]
Então, criamos o pipeline:
pipe = Pipeline(steps)
Finalmente, exibimos a representação visual do pipeline:
pipe
Construindo um Pipeline com Redução de Dimensionalidade e Classificador
Neste passo, construiremos um pipeline com uma etapa de redução de dimensionalidade e um classificador, e exibiremos sua representação visual.
Primeiro, importamos os módulos necessários:
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
Em seguida, definimos as etapas do pipeline:
steps = [("reduce_dim", PCA(n_components=4)), ("classifier", SVC(kernel="linear"))]
Então, criamos o pipeline:
pipe = Pipeline(steps)
Finalmente, exibimos a representação visual do pipeline:
pipe
Construindo um Pipeline Complexo Encadeando um Transformador de Colunas
Neste passo, construiremos um pipeline complexo com um transformador de colunas e um classificador, e exibiremos sua representação visual.
Primeiro, importamos os módulos necessários:
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
Em seguida, definimos as etapas de pré-processamento para as características numéricas e categóricas:
numeric_preprocessor = Pipeline(
steps=[
("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
("scaler", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"imputation_constant",
SimpleImputer(fill_value="missing", strategy="constant"),
),
("onehot", OneHotEncoder(handle_unknown="ignore")),
]
)
Então, criamos o transformador de colunas:
preprocessor = ColumnTransformer(
[
("categorical", categorical_preprocessor, ["state", "gender"]),
("numerical", numeric_preprocessor, ["age", "weight"]),
]
)
Em seguida, criamos o pipeline:
pipe = make_pipeline(preprocessor, LogisticRegression(max_iter=500))
Finalmente, exibimos a representação visual do pipeline:
pipe
Construindo uma Busca em Grade sobre um Pipeline com um Classificador
Neste passo, construiremos uma busca em grade sobre um pipeline com um classificador e exibiremos sua representação visual.
Primeiro, importamos os módulos necessários:
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
Em seguida, definimos as etapas de pré-processamento para as características numéricas e categóricas:
numeric_preprocessor = Pipeline(
steps=[
("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
("scaler", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"imputation_constant",
SimpleImputer(fill_value="missing", strategy="constant"),
),
("onehot", OneHotEncoder(handle_unknown="ignore")),
]
)
Então, criamos o transformador de colunas:
preprocessor = ColumnTransformer(
[
("categorical", categorical_preprocessor, ["state", "gender"]),
("numerical", numeric_preprocessor, ["age", "weight"]),
]
)
Em seguida, criamos o pipeline:
pipe = Pipeline(
steps=[("preprocessor", preprocessor), ("classifier", RandomForestClassifier())]
)
Então, definimos a grade de parâmetros para a busca em grade:
param_grid = {
"classifier__n_estimators": [200, 500],
"classifier__max_features": ["auto", "sqrt", "log2"],
"classifier__max_depth": [4, 5, 6, 7, 8],
"classifier__criterion": ["gini", "entropy"],
}
Finalmente, criamos a busca em grade:
grid_search = GridSearchCV(pipe, param_grid=param_grid, n_jobs=1)
E exibimos a representação visual da busca em grade:
grid_search
Resumo
Este laboratório forneceu um guia passo a passo sobre como construir e exibir pipelines no Scikit-Learn. Cobrimos pipelines simples com uma etapa de pré-processamento e classificador, pipelines encadeando várias etapas de pré-processamento e um classificador, pipelines com redução de dimensionalidade e um classificador, pipelines complexos encadeando um transformador de colunas e um classificador, e buscas em grade sobre pipelines com um classificador.