1

私は分類を作成し、虹彩データセットを3つのクラスに分けました。その後、クラス(色)をデータセットからの観測にリンクしたいと思います。私はcutree機能を使用しようとしました。その結果、私は1から3までのクラスと1から3までのブランチを持っていますが、それらは同じではありません - 最初のクラスは3番目のブランチ、2番目のクラスは最初のブランチ、そして3番目のクラスは2番目ですブランチ。出力クラス(cutreeに基づく)とプロットのブランチを正しくリンクするにはどうすればよいですか? dendextendパッケージのデンドログラムの枝をクラスにリンクするには?

> library('dendextend') 
> library('tidyverse') 
> iris <- datasets::iris 
> iris2 <- iris[,-5] 
> d_iris <- dist(iris2) 
> hc_iris <- hclust(d_iris, method = "complete") 
> dend <- as.dendrogram(hc_iris) 
> dend <- color_branches(dend, h = 3.5) 
> dend <- color_labels(dend, h = 3.5) 
> plot(dend) 

enter image description here

> cuts <- cutree(dend, h=3.5) 
> data_frame(class=cuts, obj=as.numeric(names(cuts))) %>% 
+   group_by(class) %>% 
+   summarise(n()) 
# A tibble: 3 × 2 
    class `n()` 
    <int> <int> 
1  1 50 
2  2 72 
3  3 28 
> plot(cut(dend, h=3.5)$upper) 

enter image description here

答えて

1

cutreefunctionあなたは、元の順序でクラスタを注文することができます論理的な引数ですorder_clusters_as_dataと呼ばれる引数を持っていますデータ(TRUE)、または樹状図のラベルの順番(FALSE)で表示されます。デフォルトはTRUEですが、カット関数は樹形図の順序に基づいてブランチに番号を付けるので、order_clusters_as_data = FALSE

cuts <- cutree(dend, h=3.5, order_clusters_as_data=FALSE) 
data_frame(class=cuts, obj=as.numeric(names(cuts))) %>% 
    group_by(class) %>% 
    summarise(n()) 
# A tibble: 3 × 2 
    class `n()` 
    <int> <int> 
1  1 72 
2  2 28 
3  3 50 
plot(cut(dend, h=3.5)$upper) 
関連する問題