Ajustando um pipeline
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 48 de 58.
Um pipeline pode ser ajustado como qualquer modelo, incluindo as etapas de limpeza. Cada configuração é nomeada pelo nome da etapa, dois sublinhados e, em seguida, o parâmetro:
pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
"decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)make_pipeline nomeia cada etapa com o nome de sua classe, em letras minúsculas. Para 200 lançamentos de foguetes de modelo, atingindo ou não 300 m, as 12 configurações obtêm as seguintes pontuações:
Cada partição ajusta novamente todo o pipeline, inclusive o imputador, para que nenhuma partição tenha acesso antecipado às linhas que a testam.
Desafio
MédioUma escola de música quer saber quais alunos de violino serão aprovados no exame de nível. O código inicial lê três valores de k, e sua busca em grade sobre um pipeline para com um erro.
- Corrija as duas chaves da grade para que a busca ajuste a estratégia do imputador e os vizinhos do k-NN.
- Imprima as melhores configurações, sua acurácia com validação cruzada e a acurácia no conjunto de teste, como abaixo.
Outra escola, com 2, 4, 6:
Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820Experimente você mesmo
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Alunos de violino: passaram na prova de nível (1) ou não (0); alguns registros de prática
# e notas de leitura à primeira vista estão faltando
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]
# Esta busca para com um erro: corrija a grade
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
"strategy": ["mean", "median"],
"n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Aprendizado supervisionado
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam7Sobreajuste
Subajuste e sobreajusteCurvas de aprendizadoRegularizaçãoConjuntos de validaçãoRevisão: ajustando uma árvore10Pipelines
PipelinesColunas mistasImputação em um pipelineAjustando um pipelineRevisão: limpar e prever2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online