【问题标题】:Hierarchical clustering on rows of varying length with sequence of numbers具有数字序列的不同长度行的层次聚类
【发布时间】:2016-08-18 13:01:24
【问题描述】:

我想在我的一个项目中进行层次聚类。

我最初的问题是我有一个巨大的图表,我在上面迭代了大量路径并以以下格式报告了路径节点。所以下面示例中的每个数字代表一个图形节点,行代表一个路径。现在我想根据共享节点的数量对这些路径进行聚类,以隔离相似类型的路径。
1210, 158, 1222, 1468 1210, 1222, 198 158, 1468, 25, 26, 27, 28

现在我想根据相似节点的数量在行之间进行层次聚类。在上表中,由于节点 1210 和 1222 相同,行(路径)1 和 2 可能是一个集群的一部分。由于节点 158 和 1468 相似,行(路径)1 和 3 也可能是另一个集群的一部分。

我检查了我可以使用hclust 函数进行层次聚类。该函数将相异矩阵作为参数。我不确定如何创建这个距离度量。似乎它可以使用 Jaccard 相似性度量。但我在 dist 方法中没有找到 Jaccard 相似性以及上述可变列格式的任何选项。

问候,

【问题讨论】:

  • 我可以确认您的数据基本上是一个二进制数据集,其中每一行代表一个观察/样本,每个节点编号是该观察/样本的变量吗?
  • 每一行代表一个图的路径,数字代表该路径中的顶点。
  • 是的,这就是数据的描述。但是考虑到您想要做的事情,即运行基于相似节点的分层集群,将整个数据集视为二进制数据集不是更容易吗。无论如何,您都需要一个二进制集来导出 Jaccard 距离。

标签: r hierarchical-clustering unsupervised-learning


【解决方案1】:

这是一个带有 Jaccard 距离的 hclust 示例(使用 vegan 包中的 vegdist),基于将您的数据抽象为二进制数据集:

dat
  25 26 27 28 158 198 1210 1222 1468
1  0  0  0  0   1   0    1    1    1
2  0  0  0  0   0   1    1    1    0
3  1  1  1  1   1   0    0    0    1

library(vegan)
dist<-vegdist(dat, method="jaccard")
hclust(dist) %>% plot

【讨论】:

  • 但是我的图表很大,不可能保留这么多的列。
猜你喜欢
  • 2019-10-22
  • 2014-04-12
  • 2011-12-29
  • 2012-07-16
  • 1970-01-01
  • 2017-06-13
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多