6

ヒエラルキー クラスタリング (具体的には) を使用して、データ セットを 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ます。代わりに多くの木が必要だからです。

4

1 に答える 1