0
假设,我必须对应于5个类别个连续程序10天每小时数据群集成员关系,创建为:统计上几天
library(xts)
set.seed(123)
timestamp <- seq(as.POSIXct("2016-10-01"),as.POSIXct("2016-10-10 23:59:59"), by = "hour")
data <- data.frame(cat1 = rnorm(length(timestamp),150,5),
cat2 = rnorm(length(timestamp),130,3),
cat3 = rnorm(length(timestamp),150,5),
cat4 = rnorm(length(timestamp),100,8),
cat5 = rnorm(length(timestamp),200,15))
data_obj <- xts(data,timestamp) # creat time-series object
head(data_obj,2)
现在,每天我单独进行集群,看看这些类别相对于彼此表现使用简单kmeans
为:
daywise_data <- split.xts(data_obj,f="days",k=1) # split data day wise
clus_obj <- lapply(daywise_data, function(x){ # clustering day wise
return (kmeans(t(x), 2))
})
一旦集群是结束了,我可视化在不同的10天群集关系与
sapply(clus_obj,function(x) x$cluster) # clustering results
,我发现结果
目测,很显然,cat1
和cat3
始终保持相同的群集。类似地,cat4
和cat5
在10个不同的日子里大多在不同的群中。
除了目视检查,是否有任何自动的方法来收集这种类型的统计从这样的聚类表?
注意:这是一个虚拟的例子。我有一个包含连续100天80个类别的数据框。像上面这样的自动总结会减少工作量。
你的解释是正确的,我想计算这个百分比。但是[维基百科](https://en.wikipedia.org/wiki/Cluster_analysis)中提到的外部评估指标似乎并不适用于我的案例,因为我没有基本事实(基准)。这个聚类是无监督的。您的进一步见解可能会帮助我进一步挖掘... –
同样的方法可用于比较两个不同时间点的结果。大多数这些方法是对称的,基本上它们是分区的相似性度量。 –
我改写了一下我的问题,并在[this]得到了答案(http://stackoverflow.com/q/40713096/3317829)堆栈溢出链接 –