ヒエラルキー クラスタリング (具体的には) を使用して、データ セットを 100 メンバー以下のサイズの 10 個のグループにクラスタリングしようとしていhclust
ますが、総人口の 40% を超えるグループはありません。私が現在知っている唯一の方法cut()
は、カットの分散に満足するまで、繰り返し使用して、継続的に低いレベルの h を選択することです。ただし、これにより、プルーニングしたグループを再度クラスタリングして 100 のメンバー グループに集約する必要があり、非常に時間がかかる可能性があります。
パッケージを試してみましたが、dynamicTreeCut
これらの (比較的単純な) 制限を入力する方法がわかりません。グループ化の数を指定する方法として使用deepSplit
していますが、ドキュメントに従って、これにより最大数が 4 に制限されます。以下の演習では、クラスターを 3 つまたは 5 つのグループに分けようとしています。 (最大サイズ制限は自力で対応できますが、こちらも挑戦してみたいという方がいらっしゃれば助かります!)。
データセットを使用した私の例を次に示し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
ご覧のとおり、2 つのクラスターのみを指定しています。私の演習では、明示的な高さの項を使用して木を切ることは避けたいと思いk
ます。代わりに多くの木が必要だからです。