1

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

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

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)

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

谢谢!

4

2 回答 2

0

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

于 2012-10-21T19:20:20.177 回答
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"   
于 2014-04-27T07:33:04.413 回答