Construindo Pipelines de Aprendizado de Máquina com Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introdução

No aprendizado de máquina, um pipeline é uma série de etapas executadas sequencialmente para transformar os dados de entrada e, em seguida, construir um modelo. O Scikit-learn fornece uma classe pipeline que pode ser usada para encadear várias etapas de processamento, facilitando a construção de modelos complexos que envolvem múltiplas etapas de pré-processamento e modelagem.

Neste tutorial, demonstraremos como construir um pipeline com seleção de recursos e classificação SVM usando o Scikit-learn. Mostraremos como integrar a seleção de recursos no pipeline para evitar o superajuste e como inspecionar o pipeline para melhor compreender o modelo.

Dicas de Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação de operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para você.

Gerar e Dividir o Conjunto de Dados

Começaremos gerando um conjunto de dados de classificação binária usando a função make_classification do Scikit-learn. Também dividiremos o conjunto de dados em subconjuntos de treinamento e teste usando a função train_test_split do Scikit-learn.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(
    n_features=20,
    n_informative=3,
    n_redundant=0,
    n_classes=2,
    n_clusters_per_class=2,
    random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

Construir o Pipeline

Agora, construiremos um pipeline composto por duas etapas: seleção de recursos e classificação SVM. Usaremos a função SelectKBest do Scikit-learn para seleção de recursos e a função LinearSVC do Scikit-learn para classificação SVM. A função SelectKBest seleciona os k recursos mais informativos com base no método f_classif, que calcula o valor F ANOVA entre cada recurso e a variável alvo. Neste exemplo, definiremos k=3.

from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.pipeline import make_pipeline
from sklearn.svm import LinearSVC

anova_filter = SelectKBest(f_classif, k=3)
clf = LinearSVC(dual="auto")
anova_svm = make_pipeline(anova_filter, clf)

Treinar o Pipeline

Agora, treinaremos o pipeline no subconjunto de treinamento usando o método fit. Durante o treinamento, a função SelectKBest selecionará os 3 recursos mais informativos com base no valor F ANOVA, e a função LinearSVC treinará um classificador SVM linear nos recursos selecionados.

anova_svm.fit(X_train, y_train)

Avaliar o Pipeline

Agora, avaliaremos o pipeline no subconjunto de teste usando o método predict. O pipeline selecionará os 3 recursos mais informativos com base no valor F ANOVA, e a função LinearSVC fará previsões nos recursos selecionados.

from sklearn.metrics import classification_report

y_pred = anova_svm.predict(X_test)
print(classification_report(y_test, y_pred))

Inspecionar o Pipeline

Podemos inspecionar o pipeline para melhor compreender o modelo. Podemos usar o índice dos recursos selecionados para recuperar os nomes dos recursos originais.

anova_svm[:-1].inverse_transform(anova_svm[-1].coef_)

Resumo

Neste tutorial, demonstramos como construir um pipeline com seleção de recursos e classificação SVM usando o Scikit-learn. Mostramos como integrar a seleção de recursos dentro do pipeline para evitar o superajuste e como inspecionar o pipeline para melhor compreender o modelo. Os pipelines são uma ferramenta poderosa para construir modelos complexos de forma modular e eficiente.