Klusteretikett er i hierarkisk klustring

Oövervakad inlärning i Python

Benjamin Wilson

Director of Research at lateral.io

Klusteretiketterna i hierarkisk klustring

  • Inte bara ett visualiseringsverktyg!
  • Klusteretiketterna kan hämtas för valfritt mellannivåsteg
  • Används t.ex. i korstabeller

Hierarkisk klustring av Eurovision

Oövervakad inlärning i Python

Mellannivåklustringar och höjd i dendrogrammet

  • T.ex. vid höjd 15:
    • Bulgarien, Cypern och Grekland bildar ett kluster
    • Ryssland och Moldavien bildar ett annat
    • Armenien utgör ett eget kluster

Inzoomad vy av kluster med horisontell linje vid höjd 15

Oövervakad inlärning i Python

Dendrogrammet visar klusteravstånd

  • Höjd i dendrogrammet = avstånd mellan kluster som slås ihop
  • T.ex. klustret med enbart Cypern och Grekland hade avstånd ca 6

Inzoomad vy med Cypern/Grekland-klustret markerat

Oövervakad inlärning i Python

Dendrogrammet visar klusteravstånd

  • Höjd i dendrogrammet = avstånd mellan kluster som slås ihop
  • T.ex. klustret med enbart Cypern och Grekland hade avstånd ca 6
  • Det nya klustrets avstånd till klustret med enbart Bulgarien var ca 12

Inzoomad vy med Cypern/Grekland-klustret och Cypern/Grekland/Bulgarien-klustret markerade

Oövervakad inlärning i Python

Mellannivåklustringar och höjd i dendrogrammet

  • Höjden i dendrogrammet anger max. avstånd mellan kluster som slås ihop
  • Kluster med större avstånd än så slås inte ihop (t.ex. 15)

Inzoomad vy av kluster med horisontell linje vid höjd 15

Oövervakad inlärning i Python

Avstånd mellan kluster

  • Definieras av en "länkningsmetod"
  • Med "complete" länkning: avståndet mellan kluster är det max. avståndet mellan deras sampel
  • Anges via parametern method, t.ex. linkage(samples, method="complete")
  • Olika länkningsmetod ger olika hierarkisk klustring!
Oövervakad inlärning i Python

Extrahera klusteretiketterna

  • Använd funktionen fcluster()
  • Returnerar en NumPy-array med klusteretiketterna

Inzoomad vy av kluster med horisontell linje vid höjd 15

Oövervakad inlärning i Python

Extrahera klusteretiketterna med 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 ... ]
Oövervakad inlärning i Python

Matcha klusteretiketterna med landsnamn

Givet en lista med strängar 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
...
Oövervakad inlärning i Python

Nu kör vi en övning!

Oövervakad inlärning i Python

Preparing Video For Download...