从R中的hclust中提取文本中的树结构

时间:2012-06-20 20:40:57

标签: r forecasting hierarchical-clustering hclust

在需求预测项目的范围内,我想确定对彼此具有相似性的时间序列进行分组的最佳方法,以便我可以应用自上而下的预测算法。目前,我的关键问题是确定适当的组是什么以及这些组的适当层次结构是什么。在做了一些阅读之后,我相信动态时间扭曲可能有所帮助。为了测试这个,我创建了一个小测试用例,但是我面临一个问题,那就是我可以提取层次结构,例如文本树或类似的东西。我希望你们中的一个人能够进一步帮助我。

我创建了以下案例来演示我的目标。

sc2 <- read.table("http://dl.dropbox.com/u/9641130/R/hclust.data", header=F, sep="")
SampleLabels <- c("ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7", "ID8", "ID9", "ID10", "ID11", "ID12", "ID13", "ID14", "ID15")
distMatrix2 <- dist(sc2, method="DTW")
hc2 <- hclust(distMatrix2, method="average")
# show the visual tree
plot(hc2, labels=SampleLabels)

不知何故,我想在文本中获取群集的名称和成员,以便我可以继续使用它。有人有想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用dendrapply和attributes来访问树中的每个节点。

答案 1 :(得分:0)

按照上面评论中Seth的回答,我得出了以下解决方案:

numgroups <- 5
groups <- cutree(hc2,k=numgroups)
LabelsAndGroups <- t(rbind(SampleLabels,groups)) # t is just to get a better overview when presenting the results here. 
LabelsAndGroups
      SampleLabels groups
 [1,] "ID1"        "1"   
 [2,] "ID2"        "1"   
 [3,] "ID3"        "2"   
 [4,] "ID4"        "1"   
 [5,] "ID5"        "3"   
 [6,] "ID6"        "4"   
 [7,] "ID7"        "1"   
 [8,] "ID8"        "4"   
 [9,] "ID9"        "5"   
[10,] "ID10"       "1"   
[11,] "ID11"       "2"   
[12,] "ID12"       "3"   
[13,] "ID13"       "4"   
[14,] "ID14"       "4"   
[15,] "ID15"       "1"