Clusterlabels bij hiërarchisch clusteren

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Clusterlabels bij hiërarchisch clusteren

  • Niet alleen een visualisatietool!
  • Clusterlabels op elk tussenstadium zijn te herstellen
  • Handig voor bv. kruistabellen

Eurovision hiërarchische clustering

Unsupervised Learning in Python

Tussenstappen & hoogte in dendrogram

  • Bijv. op hoogte 15:
    • Bulgarije, Cyprus, Griekenland vormen één cluster
    • Rusland en Moldavië vormen een ander
    • Armenië staat in een eigen cluster

Ingezoomd cluster met horizontale lijn op hoogte 15

Unsupervised Learning in Python

Dendrogrammen tonen clusterafstanden

  • Hoogte in het dendrogram = afstand tussen samenvoegende clusters
  • Bijv. clusters met alleen Cyprus en Griekenland hadden afstand ca. 6

Ingezoomd cluster met Cyprus/Griekenland-cluster gemarkeerd

Unsupervised Learning in Python

Dendrogrammen tonen clusterafstanden

  • Hoogte in het dendrogram = afstand tussen samenvoegende clusters
  • Bijv. clusters met alleen Cyprus en Griekenland hadden afstand ca. 6
  • Deze nieuwe cluster lag op afstand ca. 12 van het cluster met alleen Bulgarije

Ingezoomd cluster met Cyprus/Griekenland-cluster en Cyprus/Griekenland/Bulgarije-cluster gemarkeerd

Unsupervised Learning in Python

Tussenstappen & hoogte in dendrogram

  • Hoogte in het dendrogram geeft max. afstand tussen samenvoegende clusters aan
  • Voeg geen clusters samen die verder uit elkaar liggen dan dit (bijv. 15)

Ingezoomd cluster met horizontale lijn op hoogte 15

Unsupervised Learning in Python

Afstand tussen clusters

  • Bepaald door een "linkage-methode"
  • Bij "complete" linkage: afstand tussen clusters is de max. afstand tussen hun samples
  • Opgegeven via de parameter method, bijv. linkage(samples, method="complete")
  • Andere linkage-methode, andere hiërarchische clustering!
Unsupervised Learning in Python

Clusterlabels extraheren

  • Gebruik de functie fcluster()
  • Geeft een NumPy-array met clusterlabels terug

Ingezoomd cluster met horizontale lijn op hoogte 15

Unsupervised Learning in Python

Clusterlabels extraheren met 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 in Python

Clusterlabels koppelen aan landnamen

Gegeven een lijst 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 in Python

Laten we oefenen!

Unsupervised Learning in Python

Preparing Video For Download...