如何使用MATLAB对稀疏邻接矩阵进行聚类

时间:2016-02-11 22:44:34

标签: matlab cluster-analysis visualization

我有一个40000 * 40000稀疏连接矩阵,代表我的图表,我使用标准化切割算法来聚类此图。在群集之后,我将每个节点的分区标记作为40000 * 1阵列。

将此矩阵表示为簇矩阵的最佳方法是什么,其中将表示每个(i,j)的值,即簇之间的连接。基本上如果我有20个集群,我将需要一个20 * 20矩阵,其中每个元素是集群之间的连接总数。

1 个答案:

答案 0 :(得分:2)

从群集a 群集b中查找的连接数应该相当简单:

cluster_connections(a,b) = nnz(connectivity_matrix(tags==a, tags==b));

以下是使用完整矩阵的示例,仅用于提高可读性。稀疏矩阵的行为方式相同。

>> connectivity_matrix = randi([0 1],10)
connectivity_matrix =

   1   1   0   0   0   1   1   0   1   1
   0   0   1   0   1   1   1   1   0   1
   0   1   0   1   1   1   0   0   0   1
   0   1   0   0   1   1   1   1   1   1
   1   1   0   0   0   1   1   0   0   1
   1   0   0   0   0   1   0   1   1   1
   1   1   0   1   0   0   0   1   0   1
   0   0   1   0   1   0   0   1   0   1
   1   0   0   0   0   1   0   1   1   1
   1   1   0   0   1   0   0   0   0   1

>> tags = [1 2 3 2 3 1 2 3 3 1]
tags =

   1   2   3   2   3   1   2   3   3   1


>> connectivity_matrix(tags==2, tags==3)
ans =

   1   1   1   0
   0   1   1   1
   0   0   1   0

>> cluster_connections = nnz(connectivity_matrix(tags==2, tags==3))
cluster_connections =  7