Как работи цялостното групиране на връзки и как да начертаете дендрограма.

Йерархично групиране: Бавно :: сложно :: повторяемо :: не е подходящо за големи набори от данни.

Нека вземем 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 и стойностите ще бъдат симетрични.

Стъпка a: Най-късото разстояние в матрицата е 1 и свързаните с него вектори са C & D

Така че първият клъстер е C — D

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

A към CD = max(A-›C, A-›D) = max(25,24) = 25
B към CD = max(B-‹C, B-›D) = max(21, 20) = 21

и по подобен начин намерете за E -› CD & F -› CD

Стъпка b: Сега 2 е най-късото разстояние и векторите, свързани с това, са E & F

Вторият клъстер е E — F

A към EF = max(A-›E, A-›F) = max(9,7) = 9
CD към EF = max(CD-›E, CD-›F) = max(15, 17) = 17

Стъпка c: Сега 4 е най-късото разстояние и свързаните вектори са A и B

Третият клъстер е A — B

CD към AB = max(CD -› A, CD -›B) = max(25,21) = 25
EF към AB = max(EF -› A, EF -›B) = max(9, 5) = 9

Стъпка d: Сега 9 е най-късото разстояние и свързаните вектори са AB и EF

Четвъртият клъстер е AB — EF

CD към ABEF = max(CD-›AB, CD-›EF) = max(25,18) = 25

Стъпка e: Последният клъстер е 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
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)
linkage_matrix = linkage(dists, "complete")
dendrogram(linkage_matrix, labels=["A","B","C","D","E","F"])
plt.title("Complete Link")
plt.show()

Прочетете за стъпка по стъпка йерархичен клъстер с една връзка