Etykiety klastrów w klasteryzacji hierarchicznej

Uczenie nienadzorowane w Pythonie

Benjamin Wilson

Director of Research at lateral.io

Etykiety klastrów w klasteryzacji hierarchicznej

  • Nie tylko narzędzie wizualizacji!
  • Etykiety klastrów z dowolnego etapu pośredniego można odtworzyć
  • Przydatne np. w tabelach krzyżowych

Klasteryzacja hierarchiczna Eurowizji

Uczenie nienadzorowane w Pythonie

Pośrednie klastry a wysokość na dendrogramie

  • Np. na wysokości 15:
    • Bułgaria, Cypr, Grecja tworzą jeden klaster
    • Rosja i Mołdawia tworzą inny
    • Armenia tworzy oddzielny klaster

Przybliżony klaster z poziomą linią na wysokości 15

Uczenie nienadzorowane w Pythonie

Dendrogramy pokazują odległości między klastrami

  • Wysokość na dendrogramie = odległość między łączonymi klastrami
  • Np. klastry z samym Cyprem i Grecją miały odległość ok. 6

Przybliżony klaster z zaznaczonym skupieniem Cypr/Grecja

Uczenie nienadzorowane w Pythonie

Dendrogramy pokazują odległości między klastrami

  • Wysokość na dendrogramie = odległość między łączonymi klastrami
  • Np. klastry z samym Cyprem i Grecją miały odległość ok. 6
  • Ten nowy klaster był oddalony ok. 12 od klastra z samą Bułgarią

Przybliżony klaster z zaznaczonym skupieniem Cypr/Grecja i Cypr/Grecja/Bułgaria

Uczenie nienadzorowane w Pythonie

Pośrednie klastry a wysokość na dendrogramie

  • Wysokość na dendrogramie określa maks. odległość między łączonymi klastrami
  • Nie łącz klastrów oddalonych bardziej niż ta wartość (np. 15)

Przybliżony klaster z poziomą linią na wysokości 15

Uczenie nienadzorowane w Pythonie

Odległość między klastrami

  • Definiowana przez "metodę łączenia"
  • W łączeniu "complete": odległość między klastrami = maks. odległość między próbkami
  • Określana parametrem method, np. linkage(samples, method="complete")
  • Różna metoda łączenia, różna klasteryzacja hierarchiczna!
Uczenie nienadzorowane w Pythonie

Wyodrębnianie etykiet klastrów

  • Użyj funkcji fcluster()
  • Zwraca tablicę NumPy z etykietami klastrów

Przybliżony klaster z poziomą linią na wysokości 15

Uczenie nienadzorowane w Pythonie

Wyodrębnianie etykiet klastrów za 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 ... ]
Uczenie nienadzorowane w Pythonie

Dopasowanie etykiet klastrów do nazw krajów

Dla listy ciągów znaków 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
...
Uczenie nienadzorowane w Pythonie

Czas na ćwiczenia!

Uczenie nienadzorowane w Pythonie

Preparing Video For Download...