我的数据帧为20 x 20!每行包含一个时间序列。 我曾经使用常规的kmeans方法对显示相似模式的行进行分组,但是,似乎在时间序列上使用了其他聚类方法。
关于如何对以下时间序列进行聚类的任何想法?
structure(list(X1 = c(0.92, 0.93, 0.65, 0.82, 1, 1), X2 = c(0.8286,
0.8323, 0.4786, 0.722, 0.9899, 0.987), X3 = c(0.7794, 0.7794,
0.3856, 0.6682, 0.9537, 0.9795), X4 = c(0.7462, 0.7439, 0.3308,
0.6325, 0.9288, 0.9741), X5 = c(0.7215, 0.7175, 0.2937, 0.6061,
0.9099, 0.97), X6 = c(0.7019, 0.6966, 0.2665, 0.5853, 0.8948,
0.9666), X7 = c(0.6858, 0.6794, 0.2455, 0.5683, 0.8822, 0.9638
), X8 = c(0.6721, 0.6649, 0.2286, 0.554, 0.8714, 0.9614), X9 = c(0.6602,
0.6523, 0.2147, 0.5417, 0.862, 0.9592), X10 = c(0.6498, 0.6413,
0.203, 0.5309, 0.8537, 0.9573), X11 = c(0.6405, 0.6314, 0.1929,
0.5213, 0.8462, 0.9556), X12 = c(0.6322, 0.6226, 0.1842, 0.5127,
0.8395, 0.954), X13 = c(0.6246, 0.6146, 0.1765, 0.505, 0.8333,
0.9525), X14 = c(0.6176, 0.6072, 0.1696, 0.4979, 0.8277, 0.9512
), X15 = c(0.6112, 0.6005, 0.1635, 0.4914, 0.8224, 0.95), X16 = c(0.6053,
0.5942, 0.158, 0.4853, 0.8176, 0.9488), X17 = c(0.5998, 0.5884,
0.153, 0.4797, 0.813, 0.9477), X18 = c(0.5946, 0.583, 0.1484,
0.4745, 0.8088, 0.9467), X19 = c(0.5898, 0.5779, 0.1442, 0.4697,
0.8047, 0.9457), X20 = c(0.5852, 0.5731, 0.1403, 0.4651, 0.801,
0.9448)), row.names = c("D1", "D2", "D3", "D4", "D5", "D6"), class = "data.frame")
答案 0 :(得分:0)
请尝试使用R中的 dtwclust 软件包。这提供了各种基于距离的聚类算法。
一种替代方法是遵循基于特征的聚类技术,该技术不是使用距离度量来捕获点值的相似性,而是使用从时间序列获得的全局特征集来汇总和描述时间序列的显着信息。基于特征的聚类包括两个阶段,即 特征提取阶段和聚类阶段,可以使用标准聚类方法。对于特征提取阶段,可以使用R中的 tsfeatures 包。之后,对于所提取的特征集,可以应用自己喜欢的聚类算法(kMeans,DBCluster等)
谢谢。
[1] https://www.rdocumentation.org/packages/dtwclust/versions/3.1.1/topics/dtwclust
[2] https://cran.r-project.org/web/packages/tsfeatures/vignettes/tsfeatures.html