predict-Methode
Lektion 8 von 19 im Kurs Einführung in maschinelles Lernen von Coddy.
Aufgabe
MittelFüllen Sie die Methode predict aus.
Die Methode sollte eine Liste von X neuen Punkten entgegennehmen.
Berechnen Sie für jeden neuen Punkt den Abstand zwischen diesem Punkt und allen anderen in self.points gespeicherten Punkten. Extrahieren Sie die Labels der self.k am nächsten gelegenen Punkte.
Finden Sie das Mehrheitslabel unter den nächstgelegenen Punkten; dies wird die vorhergesagte Klasse sein.
Hier sind zum Beispiel unsere Punkte und Labels:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
Hier ist ein neuer Punkt (3, 3)
Der Abstand zwischen diesem Punkt und allen anderen Punkten beträgt:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| distance from (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| labels | A | B | A | B | C | A |
Wenn nun k = 3 ist, müssen wir die 3 am nächsten gelegenen Punkte zu unserem neuen Punkt finden. Dies sind die nächsten: (3, 2), (1, 5) und (4, 4). Die zu diesen Punkten gehörenden Labels sind: A, A, C. Wir haben zweimal A und einmal C. A ist die Mehrheit, daher wird der neue Punkt als A klassifiziert.
Die Methode predict sollte eine Liste von Labels zurückgeben, die für die neuen Punkte klassifiziert wurden.
Um das Mehrheitslabel einer Liste von Labels zu finden, verwenden Sie: max(set(labels), key = labels.count)
Probier es selbst
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):
passAlle Lektionen in Einführung in maschinelles Lernen
Übe selbstständig: Online-Python-Compiler