У меня есть (симметричная) матрица, M
которая представляет расстояние между каждой парой узлов. Например,
ABCDEFGHIJKL A 0 20 20 20 40 60 60 60 100 120 120 120 B 20 0 20 20 60 80 80 80 120 140 140 140 C 20 20 0 20 60 80 80 80 120 140 140 140 Д 20 20 20 0 60 80 80 80 120 140 140 140 E 40 60 60 60 0 20 20 20 60 80 80 80 F 60 80 80 80 20 0 20 20 40 60 60 60 G 60 80 80 80 20 20 0 20 60 80 80 80 H 60 80 80 80 20 20 20 0 60 80 80 80 Я 100 120 120 120 60 40 60 60 0 20 20 20 J 120 140 140 140 80 60 80 80 20 0 20 20 К 120 140 140 140 80 60 80 80 20 20 0 20 L 120 140 140 140 80 60 80 80 20 20 20 0
Существует ли какой-либо метод для извлечения кластеров M
(при необходимости, количество кластеров можно фиксировать), чтобы каждый кластер содержал узлы с небольшими расстояниями между ними. В примере, кластеры бы (A, B, C, D)
, (E, F, G, H)
и (I, J, K, L)
.
Я уже пробовал UPGMA и k
-means, но получающиеся кластеры очень плохие.
Расстояния - это средние шаги, которые должен сделать случайный ходок, чтобы пройти от узла A
к узлу B
( != A
) и вернуться к узлу A
. Гарантируется, что M^1/2
это показатель. Для запуска k
-значений я не использую центроид. Я определяю расстояние между n
кластерами узлов c
как среднее расстояние между n
всеми узлами в c
.
Большое спасибо :)