从M个数据点的N个聚类实验的矩阵计算总共现数

时间:2016-02-03 15:19:49

标签: r vectorization

我有一个矩阵,其中每一行都是聚类算法的输出。例如,通过3次实验,可能有7个数据点和4个可能的聚类:

# 1 2 1 2 2 3 3 # output of first clustering. Numbers are cluster labels
# 1 2 1 2 3 4 4 # output of second clustering
# 2 1 2 3 2 1 1 # output of third clustering

我知道如何创建一个共生矩阵,告诉两个点是否在同一个群集中:

xp <- c(1, 2, 1, 2, 2, 3, 3)
pairwise <- apply(as.matrix(xp), 1, 
                 function(x) as.numeric(x==as.matrix(xp)))

如何获得所有实验的成对矩阵的总和?

我这样做:

# toy data
cluster.assignments <- t(replicate(100,sample(10, replace=TRUE)))

n_samples <- dim(cluster.assignments)[1]
n_dim <- dim(cluster.assignments)[2]
pairwise <- matrix(0, n_dim, n_dim)
for(i in 1:n_samples){
    pairwise <- pairwise + 
        apply(t(cluster.assignments[i,]), 2, 
              function(x) as.numeric(x==cluster.assignments[i,]))
}

pairwise

但是当我有10000行时,这有点太慢了。我想有办法做某种申请以避免这种for,但我找不到它。

0 个答案:

没有答案