Conceptos básicos de k-means

Análisis de clústeres en Python

Shaumik Daityari

Business Analyst

¿Por qué k-means?

  • Un gran inconveniente del clustering jerárquico: el tiempo de ejecución
  • K-means es mucho más rápido en conjuntos de datos grandes
Análisis de clústeres en Python

Paso 1: generar centros de clúster

kmeans(obs, k_or_guess, iter, thresh, check_finite)
  • obs: observaciones estandarizadas
  • k_or_guess: número de clústeres
  • iter: número de iteraciones (predeterminado: 20)
  • thres: umbral (predeterminado: 1e-05)
  • check_finite: si se comprueba que hay solo números finitos (predeterminado: True)

Devuelve dos objetos: centros de clúster y distorsión

Análisis de clústeres en Python

¿Cómo se calcula la distorsión?

Análisis de clústeres en Python

Paso 2: generar etiquetas de clúster

vq(obs, code_book, check_finite=True)
  • obs: observaciones estandarizadas
  • code_book: centros de clúster
  • check_finite: si se comprueba que hay solo números finitos (predeterminado: True)

Devuelve dos objetos: lista de etiquetas de clúster y lista de distorsiones

Análisis de clústeres en Python

Nota sobre las distorsiones

  • kmeans devuelve un único valor de distorsión
  • vq devuelve una lista de distorsiones.
Análisis de clústeres en Python

Ejecutar k-means

# Importa las funciones kmeans y vq
from scipy.cluster.vq import kmeans, vq
# Genera centros y etiquetas de clúster
cluster_centers, _ = kmeans(df[['scaled_x', 'scaled_y']], 3)
df['cluster_labels'], _ = vq(df[['scaled_x', 'scaled_y']], cluster_centers)
# Grafica los clústeres
sns.scatterplot(x='scaled_x', y='scaled_y', hue='cluster_labels', data=df)
plt.show()
Análisis de clústeres en Python

Análisis de clústeres en Python

¡Vamos a practicar!

Análisis de clústeres en Python

Preparing Video For Download...