Etiquetas de clúster en clustering jerárquico

Aprendizaje no supervisado en Python

Benjamin Wilson

Director of Research at lateral.io

Etiquetas de clúster en clustering jerárquico

  • ¡No es solo visualización!
  • Puedes recuperar etiquetas en cualquier etapa intermedia
  • Útil para p. ej., tablas cruzadas

Clustering jerárquico de Eurovisión

Aprendizaje no supervisado en Python

Agrupaciones intermedias y altura en el dendrograma

  • P. ej., a altura 15:
    • Bulgaria, Chipre, Grecia forman un clúster
    • Rusia y Moldavia otro
    • Armenia en un clúster propio

Clúster ampliado con línea horizontal a altura 15

Aprendizaje no supervisado en Python

Los dendrogramas muestran distancias de clúster

  • Altura en el dendrograma = distancia entre clústeres que se unen
  • P. ej., el clúster solo con Chipre y Grecia tenía distancia aprox. 6

Clúster ampliado con clúster Chipre/Grecia resaltado

Aprendizaje no supervisado en Python

Los dendrogramas muestran distancias de clúster

  • Altura en el dendrograma = distancia entre clústeres que se unen
  • P. ej., el clúster solo con Chipre y Grecia tenía distancia aprox. 6
  • Este nuevo clúster está a distancia aprox. 12 del clúster solo con Bulgaria

Clúster ampliado con clúster Chipre/Grecia y clúster Chipre/Grecia/Bulgaria resaltados

Aprendizaje no supervisado en Python

Agrupaciones intermedias y altura en el dendrograma

  • La altura en el dendrograma indica la distancia máx. entre clústeres que se unen
  • No unas clústeres más alejados que esto (p. ej., 15)

Clúster ampliado con línea horizontal a altura 15

Aprendizaje no supervisado en Python

Distancia entre clústeres

  • Definido por un "método de enlace"
  • En enlace "completo": la distancia entre clústeres es la distancia máx. entre sus muestras
  • Se indica con el parámetro method, p. ej. linkage(samples, method="complete")
  • ¡Cambia el método de enlace, cambia el clustering jerárquico!
Aprendizaje no supervisado en Python

Extraer etiquetas de clúster

  • Usa la función fcluster()
  • Devuelve un array de NumPy con etiquetas de clúster

Clúster ampliado con línea horizontal a altura 15

Aprendizaje no supervisado en Python

Extraer etiquetas con fcluster

from scipy.cluster.hierarchy import linkage
mergings = linkage(samples, method='complete')
from scipy.cluster.hierarchy import fcluster

labels = fcluster(mergings, 15, criterion='distance') print(labels)
[ 9  8 11 20  2  1 17 14 ... ]
Aprendizaje no supervisado en Python

Alinear etiquetas con nombres de países

Dada una lista de strings country_names:

import pandas as pd
pairs = pd.DataFrame({'labels': labels, 'countries': country_names})
print(pairs.sort_values('labels'))
               countries  labels
5                Belarus       1
40               Ukraine       1
...
36                 Spain       5
8               Bulgaria       6
19                Greece       6
10                Cyprus       6
28               Moldova       7
...
Aprendizaje no supervisado en Python

¡Vamos a practicar!

Aprendizaje no supervisado en Python

Preparing Video For Download...