2012-06-20 44 views
1

在需求预测项目的范围中,我想确定将时间序列彼此具有相似性的最佳方法,以便我可以应用Top Down预测算法。目前,我的关键问题是确定什么是适当的团体,以及这些团体的适当层次。在做了一些阅读后,我相信Dynamic Time Warping可能会有所帮助。为了测试这个,我创建了一个小测试用例,但是我面临着一个问题,那就是我如何在例如文本树或类似的东西中提取层次结构。我希望你们中的一个能够进一步帮助我。从R中的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) 

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

谢谢!

+3

据我了解,你需要选择要砍倒('numgroups')?然后用类似的方法得到分组:'groups = cutree(hc2,k = numgroups)'。这给了小组的任务。不知道你还想要什么。 – Seth

回答

0

继赛斯在上述评论的答案,我已经来到了以下解决方案:

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" 
0

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

+2

如果您可以提供一些示例代码来说明您所考虑的解决方案,那就太好了。这将有助于这个答案成为未来读者更好的资源。 – joran