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

  1. Vecinos: Los puntos de datos más cercanos a un punto de consulta.
  2. Distancia: Medida de proximidad entre puntos de datos. Las más comunes son la distancia Euclidiana y la distancia Manhattan.
  3. K: Número de vecinos a considerar para tomar una decisión.

Funcionamiento del Algoritmo

  1. Entrenamiento: El algoritmo K-NN no tiene una fase de entrenamiento explícita. Simplemente almacena el conjunto de datos de entrenamiento.
  2. 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

# Realizar predicciones en el conjunto de prueba
y_pred = knn.predict(X_test)

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

  1. Objetivo: Implementar el algoritmo K-NN para el conjunto de datos Wine.
  2. 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

Módulo 2: Fundamentos de Estadística y Probabilidad

Módulo 3: Preprocesamiento de Datos

Módulo 4: Algoritmos de Machine Learning Supervisado

Módulo 5: Algoritmos de Machine Learning No Supervisado

Módulo 6: Evaluación y Validación de Modelos

Módulo 7: Técnicas Avanzadas y Optimización

Módulo 8: Implementación y Despliegue de Modelos

Módulo 9: Proyectos Prácticos

Módulo 10: Recursos Adicionales

© Copyright 2024. Todos los derechos reservados