Scegliere k
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 7 di 58.
Quale k è adatto ai peperoncini? Prova diversi valori e valuta ciascun modello due volte: sulle righe che ha studiato, accuratezza di addestramento, e su quelle nascoste, accuratezza di test.
Con k = 1, ogni peperoncino è il suo vicino più prossimo, quindi il modello memorizza: è perfetto sui suoi dati, ma peggiora su quelli nuovi. Un k molto grande sfuma i gruppi.
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))Scegli il valore di k in corrispondenza del quale la precisione sul test raggiunge il picco, per ora: il capitolo 7 mostra un giudice più equo.
Sfida
FacileUn club di calcio registra i tiri in shots.csv: distanza, angolo e goal o miss. Quale k fa le previsioni migliori? Il codice iniziale divide i dati, elenca i valori di ks ed etichetta il grafico.
- Per ogni k, addestra un modello e conserva la sua accuratezza sul set di addestramento e sul set di test.
- Stampa il valore di k migliore in base all’accuratezza sul set di test, come sotto.
- Disegna entrambi gli elenchi rispetto a
ks, con le etichettetraineteste una legenda.
Per un altro club:
Best k: 9 (test accuracy 0.783)Coddy descriverà poi il tuo grafico.
Provalo tu
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
# Una riga per ogni tiro: distanza dalla porta (m), angolo rispetto allo specchio della porta (gradi), gol o tiro sbagliato
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")
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento supervisionato
1Il tuo primo modello
Imparare dagli esempiInsiemi di addestramento e testAdattare e prevedereValutare un modelloRiepilogo: Ordinatore di semi4Regressione logistica
Previsioni sì o noLa soglia decisionaleI pesi come evidenzePiù classiRiepilogo: filtro antispam2Vicini più prossimi
Come decide k-NNScegliere kConfini decisionaliNormalizzare le scale per i viciniRiepilogo: vicini del vino5Misurare i classificatori
La matrice di confusionePrecisione e richiamoIl punteggio F1Classi sbilanciateCurve ROCRiepilogo: test di screening8Convalida incrociata
Validazione K-foldConfronto equo tra modelliRicerca a grigliaRiepilogo: riparazioni di skateboard11Progetto: specie di pinguini
Incontra i pinguiniPrepara i datiScegli un modelloOttimizza il miglioreDistribuisci il modello3Regressione lineare
Prevedere numeriPiù caratteristicheMisurare gli erroriGrafici dei residuiRiepilogo: noleggio di biciclette6Alberi decisionali
Gli alberi fanno domandeLeggere un alberoProfondità dell’alberoImportanza delle caratteristicheRiepilogo: decisioni sui prestitiEsercitati da solo: Compilatore Python online