Menu
Coddy logo textTech

Metoda predict

Lekcja 8 z 19 w kursie Wprowadzenie do uczenia maszynowego w Coddy.

challenge icon

Wyzwanie

Średni

Uzupeł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)
labelsABABCA

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)813129232
labelsABABCA

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):
        pass

Wszystkie lekcje w sekcji Wprowadzenie do uczenia maszynowego

Poćwicz samodzielnie: Kompilator Python online