Agrupamiento de Caramelos con K-Means y Pandas

Clase 26 de 37Curso Profesional de Machine Learning con scikit-learn

Resumen

¿Cómo implementar un algoritmo de clustering con K-Means en Python?

Hoy vamos a adentrarnos en la implementación del algoritmo K-Means, específicamente usando el método de mini lotes (MiniBatch K-Means), para un clustering efectivo y eficiente. Utilizaremos un conjunto de datos que contiene características de 85 diferentes caramelos. El objetivo: obtener un análisis detallado de cómo agrupar estos caramelos de manera significativa.

¿Qué es el conjunto de datos de caramelos?

El conjunto de datos de caramelos cuenta con 85 tipos diferentes y varias características:

  • Nombre del caramelo: Identificación del caramelo.
  • Atributos en composición: Si contiene chocolate, frutas, etc.
  • Porcentaje de azúcar: Cantidad relativa de azúcar respecto a otros caramelos.
  • Porcentaje de precio: Precio comparativo con los demás.
  • Preferencia del público: Proporción de veces que fue elegido en pruebas comparativas uno a uno.

¿Cómo preparamos los datos en Python?

Primero importamos las librerías necesarias y cargamos los datos en un DataFrame de pandas.

import pandas as pd
from sklearn.cluster import MiniBatchKMeans

# Cargar el archivo Candy.csv dentro del entorno de pandas
df = pd.read_csv('data/Candy.csv')
print(df.head(10))  # Verificar las primeras 10 filas

Es importante observar los datos para asegurarnos de haberlos cargado correctamente.

¿Qué es y cómo funciona MiniBatch K-Means?

MiniBatch K-Means es una variación del tradicional algoritmo K-Means, especialmente optimizado para funcionar en máquinas con recursos limitados. Funciona agrupando subconjuntos de datos (lotes) en vez de la totalidad, reduciendo así el uso de memoria y tiempo de cómputo.

¿Cómo configuramos y entrenamos el modelo?

En esta ocasión, vamos a configurar nuestro modelo para 4 clusters. Esta decisión se basa en la idea ficticia de una tienda que desea organizar sus dulces en 4 estanterías, basándose en sus similitudes.

# Configuración del modelo
kmeans = MiniBatchKMeans(n_clusters=4, batch_size=8)
# Entrenar el modelo con los datos
kmeans.fit(df.drop(columns=['nombre_caramelo']))

¿Cómo interpretamos los resultados?

Una vez entrenado el modelo, obtenemos:

  • Centros de cluster: Verificamos que se han creado 4 centros como deseamos.
print(kmeans.cluster_centers_)
  • Predicciones de cluster: Cada caramelo se categoriza en uno de los 4 clusters, facilitando la interpretación de a qué grupo se parece más un caramelo.
cluster_labels = kmeans.predict(df.drop(columns=['nombre_caramelo']))
df['cluster_label'] = cluster_labels
print(df.head())

¿Qué sigue después de la clasificación?

Con los clusters identificados, es posible:

  1. Exportar los resultados a un archivo para compartición o análisis futuro.
  2. Graficar datos para visualizar los clusters, si deseamos un análisis visual más intuitivo.
df.to_csv('clustered_candy.csv')

Este ejemplo de K-Means culmina con la integración de los datos y sus clusters en un único archivo, facilitando el análisis posterior. ¡Ahora depende de ti explorar y seguir aprendiendo sobre métodos de clustering y sus aplicaciones en diferentes áreas!