Вы здесь, потому что знаете кое-что об иерархической кластеризации и хотите знать, как работает кластеризация с одним каналом и как рисовать дендрограмму.

Иерархическая кластеризация: медленная :: сложная :: воспроизводимая :: не подходит для больших наборов данных.

Возьмем 6 простых векторов.

Использование евклидова расстояния позволяет вычислить матрицу расстояний.
Euclidean Distance = sqrt( (x2 -x1)**2 + (y2-y1)**2 )

Пример : Расстояние между A и B
sqrt ( (18- 22) ** 2 + (0–0) ** 2))
sqrt( (16) + 0)
sqrt( 16)= 4

Кластеризация одной ссылки: Минимум два расстояния. Приводит к большим более разнообразным кластерам.

Матрица расстояний: диагонали будут равны 0, а значения будут симметричными.

Шаг а. Кратчайшее расстояние в матрице равно 1, а связанные с ним векторы — C и D.

Итак, первый кластер C — D

Расстояние между другими векторами и CD

От A до CD = min(A->C, A->D) = min(25,24) = 24
B до CD = min(B-‹C, B->D) = min(21, 20) = 20

и аналогично найти для E & F

Шаг b. Теперь 2 — это кратчайшее расстояние, а связанные с ним векторы — E и F.

Второй кластер E — F

От A до EF = min(A->E, A->F) = min(9,7) = 7
CD до EF = min(CD->E, CD->F) = min(15, 17) = 15

Шаг c. Следующий кратчайший — 3, а связанные векторы — B и EF.

Третий кластер B — EF

От A до BEF = min(A->B, A->EF) = min(4,7) = 4
CD до BEF = min(CD->B, CD->EF) = min(20, 15) = 15

Шаг d. Следующий кратчайший — 4, а связанные векторы — A& BEF.

Четвертый кластер — A — BEF

CD к ABEF = min(CD->A, CD->BEF) = min(24,15) = 15

Шаг д. Последний кластер — CD — ABEF.

Давайте посмотрим на дендрограмму для кластера с одной ссылкой.

Простой скрипт Python 3 для достижения того же.

import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
from scipy.spatial.distance import squareform
import matplotlib.pyplot as plt
#skipping the distance calculation part and directly using the Distance Matrix
mat = np.array([[0,4,25,24,9,7], [4,0,21,20,5,3], [25,21,0,1,16,18], [24,20,1,0,15,17], [9,5,16,15,0,2], [7,3,18,17,2,0] ])
dists = squareform(mat)
#This step is where we mention its "Single Link" Cluster
linkage_matrix = linkage(dists, "single")
dendrogram(linkage_matrix, labels=["A","B","C","D","E","F"])
plt.title("Single Link")
plt.show()

Читать шаг за шагом Полная ссылка Иерархическая ссылка