一对出现在大量集群解决方案中的频率

How often a pair appear together over a large number of cluster solutions

为了评估 classification/clustering 解决方案的稳定性,我对我的数据进行了 运行 1,000 次算法引导。在这些分类结果中,我想计算每对在 SAME 集群中出现的频率。我对大约 250 个观察结果进行了聚类,形成了大约 31k 个这样的对。

这是生成合成数据集的伪代码:

set.seed(1)
ID <- paste ("ID",seq(1:250),sep="")
cluster1 <- sample(1:5, 250, replace=TRUE)
cluster2 <- sample(1:5, 250, replace=TRUE)
cluster3 <- sample(1:5, 250, replace=TRUE)


df <- data.frame(ID, cluster1, cluster2, cluster3)

您会看到 ID3 和 ID4 在同一个集群中出现两次。

与所有分类一样,用于表示集群成员资格的整数是任意的。

因为我的问题不是太大,所以我使用了我很容易用 C 编写的代码。

set.seed(1)

pairs.matrix <- matrix(0, 250, 250)
for (s in 1:1000){
  cluster=sample(1:5, 250, replace=TRUE)
  for (i in 1:(length(cluster)-1))
    for (j in (i+1):length(cluster))
      if (cluster[i] == cluster[j]) pairs.matrix[i,j] <- pairs.matrix[i,j] + 1
}