Мітки кластерів у ієрархічному кластеруванні

Наглядове навчання в Python

Benjamin Wilson

Director of Research at lateral.io

Мітки кластерів у ієрархічному кластеруванні

  • Це не лише інструмент візуалізації!
  • Мітки кластерів на будь-якому проміжному етапі можна відновити
  • Корисно, напр., для крос-табуляцій

Ієрархічне кластерування Eurovision

Наглядове навчання в Python

Проміжні кластеризації та висота на дендрограмі

  • Напр., на висоті 15:
    • Болгарія, Кіпр, Греція — один кластер
    • Росія та Молдова — інший
    • Вірменія — окремий кластер

Збільшений кластер з горизонтальною лінією на висоті 15

Наглядове навчання в Python

Дендрограми показують відстані між кластерами

  • Висота на дендрограмі = відстань між кластерами, що зливаються
  • Напр., кластери лише з Кіпру та Греції мали відстань ≈ 6

Збільшений кластер з підсвіченим кластером Кіпр/Греція

Наглядове навчання в Python

Дендрограми показують відстані між кластерами

  • Висота на дендрограмі = відстань між кластерами, що зливаються
  • Напр., кластери лише з Кіпру та Греції мали відстань ≈ 6
  • Новий кластер на відстані ≈ 12 від кластера лише з Болгарією

Збільшений кластер з підсвіченими кластерами Кіпр/Греція та Кіпр/Греція/Болгарія

Наглядове навчання в Python

Проміжні кластеризації та висота на дендрограмі

  • Висота на дендрограмі задає макс. відстань між кластерами, що зливаються
  • Не зливайте кластери далі один від одного за цю межу (напр., 15)

Збільшений кластер з горизонтальною лінією на висоті 15

Наглядове навчання в Python

Відстань між кластерами

  • Визначається «методом зв'язування»
  • У «complete» зв'язуванні: відстань між кластерами — це макс. відстань між їхніми вибірками
  • Задається параметром method, напр. linkage(samples, method="complete")
  • Інший метод зв'язування — інше ієрархічне кластерування!
Наглядове навчання в Python

Добування міток кластерів

  • Використайте функцію fcluster()
  • Повертає масив NumPy із мітками кластерів

Збільшений кластер з горизонтальною лінією на висоті 15

Наглядове навчання в Python

Добування міток кластерів за допомогою 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 ... ]
Наглядове навчання в Python

Вирівнювання міток кластерів із назвами країн

Маючи список рядків 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
...
Наглядове навчання в Python

Давайте потренуємось!

Наглядове навчання в Python

Preparing Video For Download...