Práctico 4: k-vecinos
Trabajos a realizar:
a) Implemente el método de clasificación de k-primeros-vecinos (k-nn). El algoritmo debe buscar en los datos de entrenamiento los k patrones más similares (según la métrica euclidea) al patrón que se quiere clasificar, y asignar una clase a dicho patrón en función de una votación simple entre los k-vecinos (qué decisión tomar en caso de empate queda a cargo del alumno). El número k de vecinos a utilizar es el único parámetro libre del algoritmo, y deberá ser optimizado utilizando un conjunto de validación. Las salidas deben ser los errores de clasificación sobre los conjuntos de entrenamiento, validación y test, y las predicciones sobre el conjunto de test. Se puede utilizar como base el código del naive-Bayes del trabajo 3.
b) Resuelva el problema de las espirales-anidadas usando k-nn con k fijo e igual a 1 (clasificador de primer vecino). Realice una gráfica de la predicción sobre el conjunto de test. Compare el resultado con el obtenido con redes.
c) Dimensionalidad: Repita el punto 7 del Práctico 1, usando k-nn. Utilice dos valores de k: el número de vecinos que se obtiene como mínimo de validación, y 1 vecino. Genere una gráfica incluyendo también los resultados de redes, árboles y naive-Bayes con Gaussianas.
d) Opcional: Otra variante de k-nn que se suele utilizar es usar
en la votación a todos los patrones que estén a una distancia
menor a un dado valor D del patrón que se quiere clasificar,
en lugar de usar un número fijo k. El único parámetro
del algoritmo, ahora, es la distancia máxima D, la
que se optimiza utilizando un conjunto de validación.
Implemente dicho algoritmo. Aplíquelo al problema de Dimensionalidad,
y compare el resultado con el obtenido en el punto c).
Entregue los códigos implementados. Discuta los puntos o resultados
que considere conveniente.