【问题标题】:What is the clustering algorithm used by hclust in R?R中hclust使用的聚类算法是什么?
【发布时间】:2013-12-08 13:44:28
【问题描述】:

我一直在使用hclust算法,代码如下:

hc = hclust(dist(mydata))
## tweeking some parameters for plotting a dendrogram
# set background color
op = par(bg="#DDE3CA")
# plot dendrogram
plot(hc, col="#487AA1", col.main="#45ADA8", col.lab="#7C8071",
     col.axis="#F38630", lwd=3, lty=3, sub='', hang=-1, axes=FALSE)
# add axis
axis(side=2, at=seq(0, 400, 100), col="#F38630",
     labels=FALSE, lwd=2)
# add text in margin
mtext(seq(0, 400, 100), side=2, at=seq(0, 400, 100),
      line=1, col="#A38630", las=2)
par(op)

当我想以编程方式实现它时,hclust 使用了哪些集群变体?是否与维基百科上的实现相同:http://en.wikipedia.org/wiki/Hierarchical_clustering

【问题讨论】:

  • 您能否更具体地说明您从文档?hclust 和/或源代码中不了解的内容?否则,您似乎是在要求其他人为您完成工作。
  • @Joshua Ulrich 自己实施了算法,但我想使用与 R 提供的相同的算法,因此我的实施结果将与 R 的结果相匹配。我只想要有关如何在 R 中实施 hclust 的文档。如果 hclust 的 R 文档是最好的,那很好。
  • 嗯,文档是一个显而易见的起点,它列出了hclust 可以使用的不同聚集方法。你还想要什么?

标签: r algorithm machine-learning hierarchical-clustering


【解决方案1】:

hclust 实现基于 Fionn Murtagh 的 Fortran 代码。它存放在 statlib 中:http://lib.stat.cmu.edu/S/multiv。所有方法都在他的手稿“Multivariate Data Analysis with Fortan, C and Java Code”中有描述,你可以找到它here。他的资源网站http://www.classification-society.org/csna/mda-sw/ 也是一个很好的起点。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    但是请注意,代码已经在 R 中进行了多次调整(即改进!); R 中的算法现在比上面提到的原始 Statlib 代码更加通用,并且在一个地方更有效。只需遵循 Joshua Ulrich 的建议:阅读帮助文档后,与其阅读 statlib 中的原始代码,不如阅读 R 的源代码。由于 R 使用基于 http 的 svn,您可以通过浏览器查看所有 R 源代码。这个是 http://svn.r-project.org/R/trunk/src/library/stats/src/hclust.f

    进一步说明:cluster 包中的 agnes() 提供了更通用的凝聚聚类方法;尤其是在cluster 的下一个版本中还有一个完整的课程。 所有这些也是 svn repositing 并且类似地可用,对于 agnes in http://svn.r-project.org/R-packages/trunk/cluster/src/twins.c (也从旧的 Fortran 翻译而来,但现在更具可读性)。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 2016-09-03
      • 2020-01-31
      • 2017-12-31
      • 2021-08-21
      • 2014-01-26
      相关资源
      最近更新 更多