Menu
CoddyTech

Jak działa k-NN

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 6 z 58.

W tym rozdziale poznasz bliżej k-NN. Po jego ukończeniu narysujesz jego mapę dla dowolnych danych, taką jak ta przedstawiająca łagodne i ostre papryczki chili:

80 papryczek chili przedstawionych według długości i grubości ścianki na zacienionej mapie: po lewej pomarańczowy obszar, w którym model wskazuje ostre papryczki, po prawej niebieski obszar, w którym wskazuje łagodne

Aby sklasyfikować nową papryczkę chili, algorytm k najbliższych sąsiadów znajduje k papryczek chili z zestawu treningowego, które są do niej najbliżej, a one głosują:

Zbliżenie papryczek chili z czarną gwiazdką oznaczającą nową papryczkę. Szare linie łączą ją z 5 najbliższymi papryczkami: 3 ostrymi i 2 łagodnymi, więc wygrywają ostre

Najbliższy oznacza najmniejszą odległość, tę, którą poznałeś w sekcji 2. Wybierasz k:

model = KNeighborsClassifier(n_neighbors=5)

n_neighbors to k, domyślnie 5, chyba że określisz inaczej. Przy dwóch klasach nieparzyste k nigdy nie może doprowadzić do remisu.

challenge icon

Wyzwanie

Łatwy

Klub astronomiczny sortuje gwiazdy z pliku stars.csv na karły i olbrzymy według temperatury i jasności. Kod początkowy wczytuje nową gwiazdę i k.

  1. Znajdź ręcznie k najbliższych gwiazd: dodaj kolumnę distance, a następnie posortuj.
  2. Wypisz, ile z nich to olbrzymy, a następnie zwycięzcę głosowania.
  3. Sprawdź wynik za pomocą modelu k-NN z tym k, dopasowanego na podstawie wszystkich gwiazd.

Dla gwiazdy innego klubu i k = 5:

Giants among the nearest 5: 4
By hand: giant
Model: giant

Spróbuj swoich sił

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier

# Jeden wiersz na gwiazdę: temperatura w tysiącach kelwinów, wielkość gwiazdowa (mniejsza wartość oznacza większą jasność), karzeł lub olbrzym
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]

# Nowa gwiazda i k
temp = float(input())
mag = float(input())
k = int(input())
new_star = pd.DataFrame({"temp_kK": [temp], "magnitude": [mag]})

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online