El algoritmo de K-Vecinos más cercanos (K-NN) es uno de los métodos más simples y efectivos para clasificación y regresión en Machine Learning. Se basa en la idea de que objetos similares están cerca unos de otros en el espacio de características.
Conceptos Clave
- Vecinos: Los puntos de datos más cercanos a un punto de consulta.
- Distancia: Medida de proximidad entre puntos de datos. Las más comunes son la distancia Euclidiana y la distancia Manhattan.
- K: Número de vecinos a considerar para tomar una decisión.
Funcionamiento del Algoritmo
- Entrenamiento: El algoritmo K-NN no tiene una fase de entrenamiento explícita. Simplemente almacena el conjunto de datos de entrenamiento.
- Predicción:
- Para un nuevo punto de datos, calcula la distancia a todos los puntos en el conjunto de datos de entrenamiento.
- Selecciona los K puntos más cercanos (vecinos).
- Para clasificación, asigna la clase más común entre los K vecinos.
- Para regresión, calcula el promedio de los valores de los K vecinos.
Ejemplo Práctico
Paso 1: Importar Bibliotecas Necesarias
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score
Paso 2: Cargar y Preparar los Datos
Para este ejemplo, utilizaremos el conjunto de datos Iris, que es un clásico en Machine Learning.
# Cargar el conjunto de datos Iris from sklearn.datasets import load_iris iris = load_iris() # Crear un DataFrame df = pd.DataFrame(data=iris.data, columns=iris.feature_names) df['target'] = iris.target # Dividir los datos en características (X) y etiquetas (y) X = df.drop(columns='target') y = df['target'] # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Paso 3: Entrenar el Modelo K-NN
# Crear el modelo K-NN con K=3 knn = KNeighborsClassifier(n_neighbors=3) # Entrenar el modelo knn.fit(X_train, y_train)
Paso 4: Realizar Predicciones
Paso 5: Evaluar el Modelo
# Calcular la precisión del modelo accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del modelo: {accuracy * 100:.2f}%')
Ejercicio Práctico
Ejercicio 1: Implementar K-NN para un Conjunto de Datos Diferente
- Objetivo: Implementar el algoritmo K-NN para el conjunto de datos Wine.
- Pasos:
- Cargar el conjunto de datos Wine.
- Dividir los datos en conjuntos de entrenamiento y prueba.
- Entrenar un modelo K-NN con K=5.
- Evaluar la precisión del modelo.
Solución
# Importar el conjunto de datos Wine from sklearn.datasets import load_wine wine = load_wine() # Crear un DataFrame df_wine = pd.DataFrame(data=wine.data, columns=wine.feature_names) df_wine['target'] = wine.target # Dividir los datos en características (X) y etiquetas (y) X_wine = df_wine.drop(columns='target') y_wine = df_wine['target'] # Dividir los datos en conjuntos de entrenamiento y prueba X_train_wine, X_test_wine, y_train_wine, y_test_wine = train_test_split(X_wine, y_wine, test_size=0.2, random_state=42) # Crear el modelo K-NN con K=5 knn_wine = KNeighborsClassifier(n_neighbors=5) # Entrenar el modelo knn_wine.fit(X_train_wine, y_train_wine) # Realizar predicciones en el conjunto de prueba y_pred_wine = knn_wine.predict(X_test_wine) # Calcular la precisión del modelo accuracy_wine = accuracy_score(y_test_wine, y_pred_wine) print(f'Precisión del modelo Wine: {accuracy_wine * 100:.2f}%')
Conclusión
El algoritmo K-NN es una técnica simple pero poderosa para tareas de clasificación y regresión. Aunque puede ser computacionalmente costoso para grandes conjuntos de datos, su simplicidad y efectividad lo hacen una herramienta valiosa en el arsenal de cualquier científico de datos. En el próximo módulo, exploraremos otros algoritmos de Machine Learning supervisado que ofrecen diferentes ventajas y desventajas.
Curso de Machine Learning
Módulo 1: Introducción al Machine Learning
- ¿Qué es el Machine Learning?
- Historia y evolución del Machine Learning
- Tipos de Machine Learning
- Aplicaciones del Machine Learning
Módulo 2: Fundamentos de Estadística y Probabilidad
- Conceptos básicos de estadística
- Distribuciones de probabilidad
- Inferencia estadística
- Teorema de Bayes
Módulo 3: Preprocesamiento de Datos
Módulo 4: Algoritmos de Machine Learning Supervisado
- Regresión lineal
- Regresión logística
- Árboles de decisión
- Máquinas de soporte vectorial (SVM)
- K-Vecinos más cercanos (K-NN)
- Redes neuronales
Módulo 5: Algoritmos de Machine Learning No Supervisado
- Clustering: K-means
- Clustering jerárquico
- Análisis de componentes principales (PCA)
- Análisis de agrupamiento DBSCAN
Módulo 6: Evaluación y Validación de Modelos
Módulo 7: Técnicas Avanzadas y Optimización
- Ensemble Learning
- Gradient Boosting
- Redes neuronales profundas (Deep Learning)
- Optimización de hiperparámetros
Módulo 8: Implementación y Despliegue de Modelos
- Frameworks y bibliotecas populares
- Implementación de modelos en producción
- Mantenimiento y monitoreo de modelos
- Consideraciones éticas y de privacidad
Módulo 9: Proyectos Prácticos
- Proyecto 1: Predicción de precios de viviendas
- Proyecto 2: Clasificación de imágenes
- Proyecto 3: Análisis de sentimientos en redes sociales
- Proyecto 4: Detección de fraudes