Sto provando a utilizzare il clustering di ricerca (in particolare hclust
) per raggruppare un set di dati in 10 gruppi con dimensioni di 100 membri o meno e senza gruppo con più di 40 % della popolazione totale. L'unico metodo che conosco attualmente è utilizzare ripetutamente lo cut()
e selezionare livelli sempre più bassi di h finché non sono soddisfatto della dispersione dei tagli. Tuttavia, questo mi costringe a tornare indietro ea raggruppare nuovamente i gruppi che ho potato per aggregarli in 100 gruppi membri, il che può richiedere molto tempo.Dendrogramma di taglio in n alberi con dimensione minima del cluster in R
Ho sperimentato con il pacchetto dynamicTreeCut
, ma non riesco a capire come inserire queste (relativamente semplici) limitazioni. Sto usando deepSplit
come modo per designare il numero di raggruppamenti, ma seguendo la documentazione, questo limita il numero massimo a 4. Per l'esercizio di seguito, tutto quello che sto cercando di fare è ottenere i cluster in 5 gruppi di 3 o più individui (posso affrontare la limitazione della dimensione massima per conto mio, ma se vuoi provare ad affrontare anche questo, sarebbe utile!).
Ecco il mio esempio, utilizzando il set di dati 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
Come si può vedere, designa solo due cluster. Per il mio esercizio, voglio evitare di usare un termine di altezza esplicito per tagliare gli alberi, poiché preferisco il numero di alberi .
È un vecchio post, ma attenzione, 0 significa "non in cluster" e non "il cluster n. 0"! In questo esempio, c'è solo 1 cluster. –