Aplicación Práctica de K-Means en Aprendizaje No Supervisado

 Título: Aplicación Práctica de K-Means en Aprendizaje No Supervisado

Introducción:

En este blog, exploraremos la aplicación práctica del algoritmo K-Means, una herramienta fundamental en aprendizaje no supervisado. K-Means es utilizado para agrupar datos sin etiquetas, dividiéndolos en grupos o clústeres basados en similitudes. Aprenderemos cómo implementar K-Means utilizando Python y la biblioteca scikit-learn.

Paso 1: Carga y Exploración de Datos:

Comencemos cargando un conjunto de datos relevante para nuestro problema de agrupamiento. Podríamos tener datos como las características de clientes de un negocio. Exploraremos la estructura de los datos para entender mejor su naturaleza.

import pandas as pd # Cargar datos (sustituye 'datos_agrupamiento.csv' con tu conjunto de datos) data = pd.read_csv('datos_agrupamiento.csv') print(data.head())

Paso 2: Preprocesamiento de Datos:

Prepararemos los datos según sea necesario, asegurándonos de manejar valores faltantes o realizar escalado si es necesario.

from sklearn.preprocessing import StandardScaler # Seleccionar características para agrupamiento X = data[['Caracteristica1', 'Caracteristica2', 'Caracteristica3']] # Escalar características para asegurar una contribución equitativa scaler = StandardScaler() X_scaled = scaler.fit_transform(X)

Paso 3: Creación y Entrenamiento del Modelo K-Means:

Con los datos preparados, construiremos y entrenaremos nuestro modelo K-Means.

from sklearn.cluster import KMeans # Especificar el número de clústeres (K) k = 3 modelo_kmeans = KMeans(n_clusters=k, random_state=42) modelo_kmeans.fit(X_scaled)

Paso 4: Visualización de los Resultados:

Visualizaremos los resultados del agrupamiento para comprender la distribución de los datos en los clústeres.

import matplotlib.pyplot as plt import seaborn as sns # Asignar etiquetas de clústeres a los datos data['Cluster'] = modelo_kmeans.labels_ # Visualizar los clústeres sns.scatterplot(x='Caracteristica1', y='Caracteristica2', hue='Cluster', data=data, palette='viridis') plt.title('Agrupamiento K-Means: Caracteristica1 vs Caracteristica2') plt.show()

Paso 5: Interpretación de Resultados:

Analizaremos las características distintivas de cada clúster para obtener insights valiosos.

# Calcular estadísticas descriptivas por clúster estadisticas_cluster = data.groupby('Cluster').describe() print(estadisticas_cluster)

todo el proceso concluyo de la siguiente manera

import numpy as np import pandas as pd import matplotlib.pyplot as plt # Configuración para reproducibilidad np.random.seed(42) # Crear datos ficticios data = pd.DataFrame({ 'Caracteristica1': np.concatenate([np.random.normal(0, 1, 100), np.random.normal(8, 1, 100), np.random.normal(15, 1, 100)]), 'Caracteristica2': np.concatenate([np.random.normal(0, 1, 100), np.random.normal(8, 1, 100), np.random.normal(15, 1, 100)]) }) plt.scatter(data['Caracteristica1'], data['Caracteristica2']) plt.title('Datos Ficticios') plt.xlabel('Caracteristica1') plt.ylabel('Caracteristica2') plt.show() from sklearn.cluster import KMeans # Configurar el modelo K-Means k = 3 modelo_kmeans = KMeans(n_clusters=k, random_state=42) # Entrenar el modelo modelo_kmeans.fit(data) # Asignar etiquetas de clúster a los datos data['Cluster'] = modelo_kmeans.labels_ plt.scatter(data['Caracteristica1'], data['Caracteristica2'], c=data['Cluster'], cmap='viridis') plt.scatter(modelo_kmeans.cluster_centers_[:, 0], modelo_kmeans.cluster_centers_[:, 1], marker='X', s=200, c='red', label='Centroides') plt.title('Resultados de K-Means') plt.xlabel('Caracteristica1') plt.ylabel('Caracteristica2') plt.legend() plt.show() # Calcular estadísticas descriptivas por clúster estadisticas_cluster = data.groupby('Cluster').describe() print(estadisticas_cluster)


Caracteristica1 \
count mean std min 25% 50%
Cluster
0 100.0 8.022305 0.953669 6.081229 7.194339 8.084107
1 100.0 -0.103847 0.908168 -2.619745 -0.600906 -0.126956
2 100.0 15.064896 1.084283 11.758733 14.344556 15.097696 Caracteristica2 \
75% max count mean std min
Cluster
0 8.538170 10.720169 100.0 7.943996 1.063730 5.698079
1 0.405952 1.852278 100.0 0.106840 0.884101 -2.123896
2 15.704437 18.852731 100.0 14.884694 0.923538 12.528355
25% 50% 75% max
Cluster
0 7.108316 7.924100 8.651450 11.078881
1 -0.567019 0.050157 0.684001 2.189803
2 14.345467 14.889121 15.508139 17.270693

Conclusión:

K-Means es una herramienta poderosa para el agrupamiento de datos no supervisado. Desde la carga de datos hasta la visualización y la interpretación, hemos explorado los pasos fundamentales para aplicar K-Means en proyectos de aprendizaje automático.

¡Esperamos que este blog te haya proporcionado una comprensión sólida y aplicable de la implementación de K-Means en tus proyectos de agrupamiento!

Comentarios

Entradas populares