Список кластеризации для функции 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)