如何从分区数据创建大的相似性矩阵作为稀疏的?

时间:2016-02-24 20:54:02

标签: r sparse-matrix similarity

我有一个向量表示将对象分割成簇:

#9 objects partitioned into 6 clusters
> part1 <- c(1,2,3,1,4,2,2,5,6)

我可以很容易地创建相似度矩阵,其中相似性的度量仅为{0,1}:0如果两个元素在不同的簇中,则为0;如果是相同的话,则为1:

> sim <- outer(part1,part1,"==")
> sim
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9]
 [1,]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2,] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [3,] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [4,]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [5,] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [6,] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [7,] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE

但是对于大型矢量(100,000个对象),由于内存限制,它不起作用。 群集平均很小,因此稀疏矩阵足够紧凑。我查看了Matrix包,找不到像outer()这样的稀疏对象。

那么有没有其他简单的方法直接从向量创建这样的矩阵(没有循环遍历所有向量的元素对并逐个元素填充稀疏矩阵)?

0 个答案:

没有答案