Метки кластеров в иерархической кластеризации

Обучение без учителя на Python

Benjamin Wilson

Director of Research at lateral.io

Метки кластеров в иерархической кластеризации

  • Не только инструмент визуализации!
  • Метки кластеров можно получить на любом промежуточном этапе
  • Используются, например, для перекрёстных таблиц

Иерархическая кластеризация Евровидения

Обучение без учителя на Python

Промежуточные кластеризации и высота на дендрограмме

  • Например, на высоте 15:
    • Болгария, Кипр и Греция — один кластер
    • Россия и Молдова — другой
    • Армения — отдельный кластер

Увеличенный кластер с горизонтальной линией на высоте 15

Обучение без учителя на Python

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

  • Высота на дендрограмме = расстояние между объединяемыми кластерами
  • Например, кластер из Кипра и Греции имел расстояние ≈ 6

Увеличенный кластер с выделенным кластером Кипр/Греция

Обучение без учителя на Python

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

  • Высота на дендрограмме = расстояние между объединяемыми кластерами
  • Например, кластер из Кипра и Греции имел расстояние ≈ 6
  • Расстояние этого нового кластера от кластера с Болгарией ≈ 12

Увеличенный кластер с выделенными кластерами Кипр/Греция и Кипр/Греция/Болгария

Обучение без учителя на Python

Промежуточные кластеризации и высота на дендрограмме

  • Высота на дендрограмме задаёт макс. расстояние между объединяемыми кластерами
  • Кластеры дальше этого порога не объединяются (например, 15)

Увеличенный кластер с горизонтальной линией на высоте 15

Обучение без учителя на Python

Расстояние между кластерами

  • Определяется «методом связи»
  • В методе «полной связи»: расстояние между кластерами — макс. расстояние между их элементами
  • Задаётся параметром 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...