Escolhendo k
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 7 de 58.
Qual valor de k é mais adequado para as pimentas? Experimente vários valores e avalie cada modelo duas vezes: nas linhas com as quais ele foi treinado, a acurácia de treino, e nas linhas ocultas, a acurácia de teste.
Em k = 1, cada pimenta é sua própria vizinha mais próxima, então o modelo memoriza: desempenho perfeito nos seus dados, pior nos novos. Um k enorme embaralha os grupos.
ks = range(1, 120, 6)
train_acc = []
test_acc = []
for k in ks:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
train_acc.append(model.score(X_train, y_train))
test_acc.append(model.score(X_test, y_test))Escolha o k em que a acurácia de teste atinge o pico, por enquanto: o capítulo 7 apresenta um avaliador mais justo.
Desafio
FácilUm clube de futebol registra chutes em shots.csv: distância, ângulo e goal ou miss. Qual valor de k faz a melhor previsão? O código inicial divide os dados, lista os ks e rotula o gráfico.
- Para cada k, ajuste um modelo e mantenha as acurácias de treino e de teste.
- Imprima o melhor k pela acurácia de teste, como abaixo.
- Desenhe as duas listas em relação a
ks, rotuladas comotrainetest, com uma legenda.
Para outro clube:
Best k: 9 (test accuracy 0.783)Em seguida, Coddy descreve seu gráfico.
Experimente você mesmo
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# Uma linha por chute: distância até o gol (m), ângulo em relação à abertura do gol (graus), gol ou erro
shots = pd.read_csv("shots.csv")
X = shots[["distance_m", "angle_deg"]]
y = shots["result"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 42, 4) # k = 1, 5, 9, ..., 41
fig, ax = plt.subplots()
ax.set_title("Shots: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Accuracy")
# 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 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