聚类稀疏共生矩阵

时间:2017-06-04 18:51:51

标签: python matrix cluster-analysis sparse-matrix

我有两个N x N共生矩阵(484x484和1060x1060),我必须分析。矩阵沿对角线对称并包含许多零值。非零值是整数。

我想把非零的位置组合在一起。换句话说,我想要做的是算法on this link。当选择按群集排序时,矩阵将按行和列重新排列,以将非零值组合在一起。

由于我使用Python执行此任务,因此我查看了SciPy Sparse Linear Algebra库,但找不到我要查找的内容。

非常感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:4)

如果矩阵dist具有对象之间的成对距离,那么您可以通过在此矩阵(http://scikit-learn.org/stable/modules/clustering.html)上应用聚类算法来找到重新排列矩阵的顺序。例如,它可能类似于:

from sklearn import cluster
import numpy as np
model = cluster.AgglomerativeClustering(n_clusters=20,affinity="precomputed").fit(dist)
new_order = np.argsort(model.labels_)
ordered_dist = dist[new_order] # can be your original matrix instead of dist[]
ordered_dist = ordered_dist[:,new_order]

顺序由变量model.labels_给出,变量{| 1}}具有每个样本所属的簇的编号。一些观察结果:

  1. 您必须找到一个接受距离矩阵作为输入的聚类算法。 AgglomerativeClustering是一种算法(注意affinity="precomputed"选项告诉它我们正在使用预先计算的距离。)
  2. 您所拥有的似乎是成对相似度矩阵,在这种情况下,您需要将其转换为距离矩阵(例如dist=1 - data/data.max()
  3. 在我假设20个集群的示例中,您可能需要稍微使用此变量。或者,您可以尝试找到数据的最佳一维表示(使用例如MDS)来描述样本的最佳排序。

答案 1 :(得分:0)

由于您的数据稀少,将其视为图表,而不是矩阵

然后尝试各种图形聚类方法。例如,派系对这些数据很有意思。

请注意,并非一切都可能聚集。