Ich versuche zu verwenden Clusterarchive (speziell hclust
), um einen Datensatz in 10 Gruppen mit einer Größe von 100 Mitgliedern oder weniger und ohne eine Gruppe mit mehr als 40 zu gruppieren % der Gesamtbevölkerung. Die einzige Methode, die ich derzeit kenne, ist, wiederholt cut()
zu verwenden und kontinuierlich niedrigere h-Werte auszuwählen, bis ich mit der Zerstreuung der Schnitte zufrieden bin. Dies zwingt mich jedoch dazu, zurückzugehen und die Gruppen, die ich beschnitten habe, neu zu gruppieren, um sie in 100 Mitgliedsgruppen zusammenzufassen, was sehr zeitaufwendig sein kann.Schneiden von Dendrogramm in n-Bäume mit minimaler Clustergröße in R
Ich habe mit dem dynamicTreeCut
Paket experimentiert, kann aber nicht herausfinden, wie man diese (relativ einfachen) Einschränkungen eingibt. Ich benutze deepSplit
als die Art, die Anzahl der Gruppierungen zu bestimmen, aber nach der Dokumentation begrenzt dies die maximale Anzahl auf 4. Für die Übung unten, alles, was ich tun möchte, ist es, die Cluster in 5 Gruppen von 3 zu bekommen oder mehr Einzelpersonen (ich kann die maximale Größenbeschränkung allein bewältigen, aber wenn Sie versuchen möchten, dies auch anzugehen, wäre es hilfreich!).
Hier ist mein Beispiel, mit dem Datensatz Orange
.
library(dynamicTreeCut)
library(reshape2)
##creating 14 individuals from Orange's original 5
Orange1<-Orange
Orange1$Tree<-as.numeric(as.character(Orange1$Tree))
Orange2<-Orange1
Orange3<-Orange1
Orange2$Tree=Orange2$Tree+6
Orange3$Tree=Orange3$Tree+11
combOr<-rbind(Orange1, Orange2[1:28,], Orange3)
####casting the data to make a correlation matrix, and then running
#### a hierarchical cluster
castOrange<-dcast(combOr, age~Tree, mean, fill=0)
castOrange[,16]<-c(1,34,5,35,34,35,21)
castOrange[,17]<-c(1,34,5,35,34,35,21)
orangeCorr<-cor(castOrange[, -1])
orangeClust<-hclust(dist(orangeCorr))
###running the dynamic tree cut
dynamicCut<-cutreeDynamic(orangeClust, minClusterSize=3, method="tree", deepSplit=4)
dynamicCut
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
Wie Sie sehen können, bezeichnet es nur zwei Cluster. Für meine Übung möchte ich mich davor hüten, einen expliziten Höhenbegriff zu verwenden, um die Bäume zu schneiden, da ich stattdessen eine k
Anzahl von Bäumen haben möchte.
Es ist ein alter Beitrag, aber sei vorsichtig, 0 bedeutet "nicht geclustert" und nicht "der # 0 Cluster"! In diesem Beispiel gibt es nur 1 Cluster. –