Metoda predict
Lekcja 8 z 19 w kursie Wprowadzenie do uczenia maszynowego w Coddy.
Wyzwanie
ŚredniUzupełnij metodę predict.
Metoda powinna przyjmować listę X nowych punktów.
Dla każdego nowego punktu oblicz odległość między tym punktem a wszystkimi pozostałymi punktami zapisanymi w self.points. Pobierz etykiety self.k najbliższych punktów.
Znajdź najczęściej występującą etykietę wśród najbliższych punktów — będzie to przewidywana klasa.
Na przykład oto nasze punkty i etykiety:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
Oto nowy punkt (3, 3)
Odległość między tym punktem a wszystkimi pozostałymi punktami wynosi:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| odległość od (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| labels | A | B | A | B | C | A |
Jeśli teraz k = 3, musimy znaleźć 3 punkty najbliższe naszemu nowemu punktowi. Oto najbliższe punkty: (3, 2), (1, 5) i (4, 4). Odpowiadające im etykiety to: A, A, C. Mamy 2 etykiety A i 1 etykietę C. Etykieta A występuje najczęściej, więc nowy punkt zostaje sklasyfikowany jako A.
Metoda predict powinna zwracać listę etykiet przypisanych nowym punktom.
Aby znaleźć najczęściej występującą etykietę na liście etykiet, użyj: max(set(labels), key = labels.count)
Spróbuj swoich sił
class KNN:
def __init__(self, k):
self.points = None
self.labels = None
self.k = k
def distance(self, point_a, point_b):
# Write your code here
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def fit(self, X_train, y_train):
# Write your code here
self.points = X_train
self.labels = y_train
def predict(self, X_test):
passWszystkie lekcje w sekcji Wprowadzenie do uczenia maszynowego
Poćwicz samodzielnie: Kompilator Python online