【问题标题】:Plotting Minimum Distance within clusters and linkage distance between clusters绘制集群内的最小距离和集群之间的链接距离
【发布时间】:2017-04-30 16:06:19
【问题描述】:

我使用分层平均链接方法使用欧几里得距离进行聚类。要找到要切割的簇号 (k),我需要绘制两张图,一张用于聚类内的最小距离与聚类数(图 1),另一张用于聚类之间的链接距离与聚类数(图 2)。

> df
     Site1 Site2 Site3 Site4 Site5 Site6
1985    11     0     5    15    13    15
1986    12    12     5    31    14    26
1987    23    21    17    14    25    12
1988    22    25    18    17    24    14
1989    11    16     8    18    13    19
1990     7     5    21     8     9    24
1991    20    13     9    21    22     7
1992    15    11     6    19    17    20
1993    19    18     9    11    21    11
1994    33     9    28    17    26    20
1995    16    14    19    33    17    10
1996    14    21    25     4     6    47
1997     4     0    11    22    14    16
1998    10    31    13    26    12    14
1999    24    17    18    41    19    20
2000    21    17    23    19    23    14
2001    12     8     6     7    19    20
2002    19    24    19    31    24    17
2003    13    29    10    28     7     9
2004    19    14    19    22    20    13
2005    16     8     9    10    11    13
2006     8     9    46     9    20    19
2007    12    10    15    13    10     9
2008    12    18    25    12    47    22
2009    19    18    18    23    21    20
2010    23    10    46    35    25    12
2011    20    35    18    30    22    18
2012    23    13    23    34    25    34
2013    17    28    20    13    19    21
2014    19    22    16    16    21    23

df2 <- data.frame(t(df))
tree <- hclust(dist(df2))

【问题讨论】:

    标签: r


    【解决方案1】:

    由于没有说明任何问题,我假设您有兴趣使用示例数据集绘制上图。如果我对这个假设有误,请更正。

    (i) 根据序列链接距离查找组数。本案例的连锁距离序列来自plot(tree)

    library(dplyr)    
    cls.df <- data.frame(h=40:100)
    cls.df$k <- sapply(cls.df$h, function(x) cutree(tree, h=x) %>% max )
    

    (ii) 通过仅保留最小链接距离 h 的组数 k 来清理表格

    cls.df <- cls.df %>% 
              group_by(k) %>% 
              summarise(h=min(h))
    

    (iii) 情节:

    library(ggplot2)
    ggplot(cls.df, aes(k, h)) + 
       geom_line() + 
       geom_point() + 
       theme_bw() + 
       ylab("Linkage Distance") + 
       xlab("Number of Cluster")
    

    【讨论】:

    • 非常感谢 :) :)
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2019-01-14
    • 1970-01-01
    • 2019-06-11
    • 2013-05-04
    • 2020-04-08
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多