什么是Hclust在R中使用的聚类算法?

时间:2013-11-23 17:58:28

标签: r algorithm machine-learning hierarchical-clustering

我一直在使用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)

我希望以编程方式实现聚类的最佳聚类方式?它与维基百科上的实现相同:http://en.wikipedia.org/wiki/Hierarchical_clustering

2 个答案:

答案 0 :(得分:4)

hclust实现基于Fionn Murtagh的Fortran代码。它存放在statlib中:http://lib.stat.cmu.edu/S/multiv。所有方法都在他的手稿“使用Fortan,C和Java代码进行多变量数据分析”中进行了描述,您可以找到它here。他的资源网站http://www.classification-society.org/csna/mda-sw/也是一个很好的起点。希望这会有所帮助。

答案 1 :(得分:4)

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

进一步说明:包集群中的agnes()提供了更加通用的凝聚聚类方法;特别是在cluster的下一个版本中更多的整个班级。 所有这些都是svn repositing和类似,可用于agnes in http://svn.r-project.org/R-packages/trunk/cluster/src/twins.c (也翻译自旧的Fortran,但现在更具可读性。)