← capítulo

k-Nearest Neighbors

Para etiquetar algo nuevo, mira qué está más cerca y copia la mayoría.

Sin entrenamiento. El conjunto de entrenamiento es el modelo.

La idea completa

Los datos

150 flores Iris, tres especies, dos features: largo y ancho del pétalo.

Setosa está sola. Versicolor y virginica se traslapan en una costura difusa.

El modelo completo

Distancia de la consulta a cada punto:

d(q,xi)=j=1D(qjxij)2d(q, x_i) = \sqrt{\sum_{j=1}^{D} (q_j - x_{ij})^2}

Votación entre los k más cercanos:

y^(q)=argmaxciNk(q)1 ⁣[yi=c]\hat{y}(q) = \arg\max_{c} \sum_{i \,\in\, N_k(q)} \mathbb{1}\!\left[\, y_i = c \,\right]

Ningún parámetro se ajusta con los datos. Tú eliges k; todo lo demás es un ordenamiento y un conteo.

Míralo votar

Para cada flor de prueba: encierra a los 5 más cercanos, dibuja los votos, colorea según el ganador, ponle anillo rojo si falla.

Unánime en las nubes de setosa y virginica. Dividido 4–1 y 3–2 en la costura — ahí están los tres errores, y son los datos siendo ambiguos, no el modelo equivocándose.

k cambia la forma, no solo el puntaje

El accuracy es plano en Iris — las clases son demasiado limpias para que k importe mucho.

Pero la superficie de decisión pasa de dentada (k = 1) a suave (k = 15). En datos más ruidosos, esa forma es la diferencia entre memorizar y generalizar.

Desde cero contra librería

KNeighborsClassifier(n_neighbors=5) es el mismo algoritmo. Ambos puntúan 0.9333 y coinciden en las 45 flores de prueba.

La ventaja de la librería no es el accuracy — es el KD-tree que encuentra vecinos sin recorrer cada punto.

Conclusiones