método predict
Lección 8 de 19 del curso Introducción al aprendizaje automático de Coddy.
Desafío
IntermedioCompleta el método predict.
El método debe recibir una lista de X puntos nuevos.
Para cada punto nuevo, calcula la distancia entre este punto y todos los demás puntos almacenados en self.points. Extrae las etiquetas de los self.k puntos más cercanos.
Encuentra la etiqueta mayoritaria de los puntos más cercanos, esta será la clase predicha.
Por ejemplo, aquí están nuestros puntos y etiquetas:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
Aquí hay un nuevo punto (3, 3)
La distancia entre este punto y todos los demás puntos es:
| 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 |
Ahora, si k = 3, entonces necesitamos encontrar los 3 puntos más cercanos a nuestro nuevo punto. Estos son los más cercanos: (3, 2), (1, 5), y (4, 4). Las etiquetas correspondientes a estos puntos son: A, A, C. Tenemos 2 A y 1 C. A es la mayoría, por lo que el nuevo punto se clasifica como A.
El método predict debe devolver una lista de etiquetas que fueron clasificadas para los nuevos puntos.
Para encontrar la etiqueta mayoritaria de una lista de etiquetas, utiliza: max(set(labels), key = labels.count)
Pruébalo tú mismo
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):
passTodas las lecciones de Introducción al aprendizaje automático
Practica por tu cuenta: Compilador de Python online