5

デンドログラムやクラスターのノードの階層構造を抽出したいと考えています。

たとえば、次の例では:

library(dendextend)
dend15 <- c(1:5) %>% dist %>% hclust(method = "average") %>% as.dendrogram
dend15 %>% plot

ノードは、デンドログラム内の位置に従って分類されます (下の図を参照)。

ここに画像の説明を入力

(dendextend パッケージのチュートリアルから抜粋した図)

次の出力として、各最終リーフのすべてのノードを取得したいと思います: (ラベルは左から右、下から上に並べられます)

        hierarchical structure
leaf_1: 3-2-1
leaf_2: 4-2-1
leaf_3: 6-5-1
leaf_4: 8-7-5-1
leaf_5: 9-7-5-1

前もって感謝します、

4

1 に答える 1

6

最初に、ノードを使用するすべてのサブツリー (構造) を見つけます。あなたの例では、9 つ​​のノードがあります。

subtrees <- partition_leaves(dend15)
leaves <- subtrees[[1]]   # assume top node is used by all subtrees

各リーフのルートを検索するヘルパー関数を作成し、すべてのリーフに適用します。

pathRoutes <- function(leaf) {
  which(sapply(subtrees, function(x) leaf %in% x))
}

paths <- lapply(leaves, pathRoutes)

各リスト要素がエンドノード/リーフの構造であるリスト形式の生の出力

> paths
[[1]]
[1] 1 2 3

[[2]]
[1] 1 2 4

[[3]]
[1] 1 5 6

[[4]]
[1] 1 5 7 8

[[5]]
[1] 1 5 7 9
于 2015-12-24T04:17:22.740 に答える