Wybór k
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 7 z 58.
Które k pasuje do papryczek chili? Wypróbuj kilka wartości i oceń każdy model dwukrotnie: na wierszach, na których się uczył — dokładność treningowa — oraz na ukrytych wierszach — dokładność testowa.
Przy k = 1 każdy chili jest swoim własnym najbliższym sąsiadem, więc model zapamiętuje dane: osiąga doskonałe wyniki dla swoich wierszy, ale gorsze dla nowych. Bardzo duże k zaciera granice między grupami.
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))Na razie wybierz takie k, dla którego dokładność na zbiorze testowym osiąga maksimum: rozdział 7 pokazuje, jak uczciwiej oceniać.
Wyzwanie
ŁatwyKlub piłkarski zapisuje strzały w pliku shots.csv: odległość, kąt oraz goal lub miss. Która wartość k daje najlepsze przewidywania? Kod początkowy dzieli dane, tworzy listę ks i dodaje etykiety do wykresu.
- Dla każdej wartości k dopasuj model i zachowaj jego dokładność na zbiorze treningowym i testowym.
- Wypisz najlepszą wartość k pod względem dokładności na zbiorze testowym, jak poniżej.
- Narysuj obie listy w funkcji
ks, z etykietamitrainitestoraz legendą.
Dla innego klubu:
Best k: 9 (test accuracy 0.783)Coddy następnie opisze Twój wykres.
Spróbuj swoich sił
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
# Jeden wiersz na każdy strzał: odległość od bramki (m), kąt względem światła bramki (stopnie), gol lub pudło
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")
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online