Список кластеризации для функции hclust

используя plot(hclust(dist(x))) метод, я смог нарисовать карту дерева кластера. Это работает. Тем не менее, я хотел бы получить список всех кластеров, а не диаграмму дерева, потому что у меня есть огромное количество данных (например, 150k узлов), и сюжет становится беспорядочным.

другими словами, скажем, если a b c является кластером, и если d e f g является кластером, тогда я хотел бы получить что-то вроде этого:

1 a,b,c
2 d,e,f,g

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

как это возможно?

2 ответов


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

построить объект hclust.

hc <- hclust(dist(USArrests), "ave")
#plot(hc)

теперь вы можете вырезать дерево на столько ветвей, сколько хотите. Для моего следующего трюка я разделю дерево на две группы. Вы устанавливаете количество сокращений с помощью


скажем,

y<-dist(x)
clust<-hclust(y)
groups<-cutree(clust, k=3)
x<-cbind(x,groups)

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

x1<- subset(x, groups==1)
x2<- subset(x, groups==2)
x3<- subset(x, groups==3)