связывание корня иерархических кластеров с их дочерними элементами в matlab - PullRequest
0 голосов
/ 29 ноября 2018

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

a= [1;2;3;4;5;20;21;22;28;29]
Z=linkage(a,'ward')
[clusterIndexes]=cluster(Z,'maxclust',2)

этот фрагмент данных кластеризируется на две части, где первый кластер содержит 1,2,3,4,5.Давайте назовем этот кластер A, а второй содержит 20,21,22,28,29, который является кластером B.

Когда я запускаю следующий скрипт и данные кластера в 3

a= [1;2;3;4;5;20;21;22;28;29]
Z=linkage(a,'ward')
[clusterIndexes]=cluster(Z,'maxclust',3)

Это дает мне кластеры (1 2 3 4 5) = кластер X, (20,21,22) = кластер Y, (28,29) = кластер Z.

Как программно продемонстрировать, что кластер Bразделены на кластер Y и кластер Z?

Извините за наивный вопрос, я очень плохо знаком с Matlab.

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете использовать setxor для определения любых различий между двумя кластерами.Пользователь union объединяет clusterY и clusterZ при сравнении с clusterB.Поскольку результат пуст, два кластера содержат одинаковый набор чисел.Если бы между ними были какие-либо различия, они были бы выведены как setxor.

clusterB = [20 21 22 28 29];
clusterY = [20 21 22];
clusterZ = [28 29];

setxor(clusterB, union(clusterY, clusterZ))

ans =

  1×0 empty double row vector

Предположим, например, что у clusterB есть дополнительный номер, вы можете увидеть результаты ниже.

clusterB = [5 20 21 22 28 29];
setxor(clusterB, union(clusterY, [clusterZ]))

ans =

     5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...