Rótulos de clusters na clusterização hierárquica

Unsupervised Learning em Python

Benjamin Wilson

Director of Research at lateral.io

Rótulos de clusters na clusterização hierárquica

  • Não é só visualização!
  • Dá para recuperar rótulos em qualquer estágio intermediário
  • Útil para, por exemplo, tabelas cruzadas

Clusterização hierárquica do Eurovision

Unsupervised Learning em Python

Agrupamentos intermediários e altura no dendrograma

  • Ex.: na altura 15:
    • Bulgária, Chipre, Grécia formam um cluster
    • Rússia e Moldávia formam outro
    • Armênia em um cluster sozinho

Cluster ampliado com linha horizontal na altura 15

Unsupervised Learning em Python

Dendrogramas mostram distâncias entre clusters

  • Altura no dendrograma = distância entre clusters que se unem
  • Ex.: o cluster com só Chipre e Grécia tinha distância ~6

Cluster ampliado com cluster Chipre/Grécia destacado

Unsupervised Learning em Python

Dendrogramas mostram distâncias entre clusters

  • Altura no dendrograma = distância entre clusters que se unem
  • Ex.: o cluster com só Chipre e Grécia tinha distância ~6
  • Esse novo cluster está a ~12 do cluster com só Bulgária

Cluster ampliado com cluster Chipre/Grécia e Chipre/Grécia/Bulgária destacados

Unsupervised Learning em Python

Agrupamentos intermediários e altura no dendrograma

  • A altura no dendrograma indica a distância máx. entre clusters que se unem
  • Não una clusters mais distantes que isso (ex.: 15)

Cluster ampliado com linha horizontal na altura 15

Unsupervised Learning em Python

Distância entre clusters

  • Definido por um "método de linkage"
  • Em "complete" linkage: a distância entre clusters é a distância máx. entre suas amostras
  • Especificado via parâmetro method, ex.: linkage(samples, method="complete")
  • Método de linkage diferente, clusterização hierárquica diferente!
Unsupervised Learning em Python

Extraindo rótulos de clusters

  • Use a função fcluster()
  • Retorna um array do NumPy com os rótulos dos clusters

Cluster ampliado com linha horizontal na altura 15

Unsupervised Learning em Python

Extraindo rótulos com 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 ... ]
Unsupervised Learning em Python

Alinhando rótulos de clusters com países

Dada uma 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
...
Unsupervised Learning em Python

Vamos praticar!

Unsupervised Learning em Python

Preparing Video For Download...