Pipelines
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 45 de 58.
Tabelas reais chegam com lacunas, palavras e escalas variadas. Este capítulo cria um único objeto que as limpa e faz previsões, um pipeline:
Comece aos poucos: make_pipeline encadeia um escalonador e um modelo:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))Para 200 soldas de teste, fortes ou fracas, isso imprime 0.86, contra 0.74 sem escalonamento.
fit aprende a escala a partir das linhas de treinamento e, em seguida, treina. Todas as linhas posteriores são escaladas da mesma maneira, automaticamente.
Desafio
MédioUma empresa de balões decide todas as noites se amanhã será um dia de voo. O código inicial faz a normalização manualmente: a acurácia de teste é boa, mas a previsão nunca é normalizada, então ele responde yes para qualquer condição climática.
- Substitua-o por um pipeline, com um normalizador seguido de k-NN, ajustado com as linhas de treinamento.
- Imprima a acurácia de teste e avalie a previsão com ele.
Outra empresa, dia 20, 32, 7000, 9:
Test accuracy: 0.880
Flying day: noExperimente você mesmo
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Dias anteriores em uma empresa de balões: dia de voo (1) ou não (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Previsão para amanhã: vento, rajadas, visibilidade, passageiros com reserva
day = np.array([[float(input()), float(input()), float(input()), float(input())]])
# Padronização manual: a pontuação parece boa, mas os dados da previsão nunca são padronizados
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
print("Flying day: yes")
else:
print("Flying day: no")
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 spam2Vizinhos 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