Menu
CoddyTech

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:

Uma grade de acurácias médias de CV: linhas para os preenchimentos mean, median e most_frequent, colunas para as profundidades da árvore 2, 4, 6 e 8. As pontuações variam de 0.733 a 0.820, e a célula dos preenchimentos median na profundidade 6 está marcada como a melhor, com 0.820

Cada partição ajusta novamente todo o pipeline, inclusive o imputador, para que nenhuma partição tenha acesso antecipado às linhas que a testam.

challenge icon

Desafio

Médio

Uma 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.

  1. Corrija as duas chaves da grade para que a busca ajuste a estratégia do imputador e os vizinhos do k-NN.
  2. 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.820

Experimente 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
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Python online