Práctico 4: k-vecinos

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 práctico 3.

b) Resuelva el problema de las espirales-anidadas usando k-nn. Realice una gráfica de la predicción sobre el conjunto de test. Compare el resultado con el obtenido con arboles de decisión. Utilice el datasets de "espirales con ruido" que está en la página de datasets. Hay una versión "original" y otra que tiene agregadas dos variables que contienen ruido uniforme, compare los dos métodos sobre las dos versiones.

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 1: 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).

e) Opcional 2: Regresión con k_nn: Implemente el método de k_nn pesado por distancias, como se describió en la teoría, para problemas de regresión. Hay que elegir los k-vecinos más cercanos, y dar como respuesta el promedio de sus valores de respuesta, pesados proporcionales a su distancia al patrón a predecir. Aplíquelo al problema de Sunspots (SSP), y compare el resultado con el obtenido con ANN.

Entregue los códigos implementados. Discuta los puntos o resultados que considere conveniente.