Označení shluků v hierarchickém shlukování

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Označení shluků v hierarchickém shlukování

  • Není to jen nástroj pro vizualizaci!
  • Označení shluků lze získat v jakékoli mezifázi
  • Využití např. v křížových tabulkách

Hierarchické shlukování Eurovize

Unsupervised Learning in Python

Mezifázové shlukování a výška v dendrogramu

  • Např. ve výšce 15:
    • Bulharsko, Kypr a Řecko tvoří jeden shluk
    • Rusko a Moldavsko další
    • Arménie tvoří samostatný shluk

Přiblížený shluk s vodorovnou čárou ve výšce 15

Unsupervised Learning in Python

Dendrogramy ukazují vzdálenosti shluků

  • Výška v dendrogramu = vzdálenost mezi slučovanými shluky
  • Např. shluky pouze s Kyprem a Řeckem měly vzdálenost přibližně 6

Přiblížený shluk se zvýrazněným shlukem Kypr/Řecko

Unsupervised Learning in Python

Dendrogramy ukazují vzdálenosti shluků

  • Výška v dendrogramu = vzdálenost mezi slučovanými shluky
  • Např. shluky pouze s Kyprem a Řeckem měly vzdálenost přibližně 6
  • Tento nový shluk má vzdálenost přibližně 12 od shluku pouze s Bulharskem

Přiblížený shluk se zvýrazněným shlukem Kypr/Řecko a shlukem Kypr/Řecko/Bulharsko

Unsupervised Learning in Python

Mezifázové shlukování a výška v dendrogramu

  • Výška v dendrogramu určuje max. vzdálenost mezi slučovanými shluky
  • Neslučujte shluky vzdálenější než tato hodnota (např. 15)

Přiblížený shluk s vodorovnou čárou ve výšce 15

Unsupervised Learning in Python

Vzdálenost mezi shluky

  • Definováno tzv. „metodou propojení“
  • U „úplného“ propojení: vzdálenost mezi shluky je max. vzdálenost mezi jejich vzorky
  • Určeno parametrem method, např. linkage(samples, method="complete")
  • Jiná metoda propojení, jiné hierarchické shlukování!
Unsupervised Learning in Python

Získání označení shluků

  • Použijte funkci fcluster()
  • Vrací pole NumPy s označeními shluků

Přiblížený shluk s vodorovnou čárou ve výšce 15

Unsupervised Learning in Python

Získání označení shluků pomocí 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

Spárování označení shluků s názvy zemí

Máme-li seznam řetězců 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

Pojďme si to vyzkoušet!

Unsupervised Learning in Python

Preparing Video For Download...