2013-11-23 30 views
2

我使用hclust算法一直是,这里是代码:R中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

+3

您能否更具体地了解您从“hclust”文档和/或源代码中无法理解的内容?否则,就好像你要求别人为你做这项工作。 –

+0

@Joshua Ulrich不喜欢自己实现这个算法,但我想使用与R提供的算法相同的算法,因此我的实现结果将与R的结果相匹配。我只想记录在R中如何实现hclust。如果hclust的R文档是最好提供这个然后那很好。 –

+4

那么,文档是一个明显的起点,它列出了'hclust'可以使用的不同聚集方法。你还想要什么? –

回答

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在 http://svn.r-project.org/R-packages/trunk/cluster/src/twins.c (也从旧Fortran翻译,但现在更可读)。