hirearchical clustering(具体的にはhclust
)を使用して、100個以下のサイズを持つ10個のグループにデータセットをクラスタリングし、40個を超えるグループを持たない総人口の%。私が現在知っている唯一の方法は、cut()
を繰り返し使用し、カットの分散に満足するまで、連続的に低いレベルを選択することです。しかし、これは私に戻って、100グループにまとめるために整理したグループを再クラスタリングしなければならず、非常に時間がかかることがあります。最小クラスタサイズのn個のツリーに樹木図をカットするR
私は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
にしたいので、明示的な高さの用語を使って木を切ることを躊躇したい。最も適切な相違測度(例えば、"euclidean"
、"maximum"
、"manhattan"
、"canberra"
、"binary"
、又は"minkowski"
)とつなぎ法(例えば、"ward"
、"single"
、"complete"
、"average"
、"mcquitty"
、"median"
アウト
これは古い投稿ですが、0は「クラスタ化されていない」ことを意味し、「#0クラスタ」は意味しません。この例では、クラスタは1つだけです。 –