我有两个N×N共生矩阵(484×484和1060×1060),我必须分析。矩阵沿着对角线是对称的并包含大量的零值。非零值是整数。我想将非零的位置分组在一起。换句话说,我想要做的是算法on this link。当按群集排序被选中时,矩阵被重新排列成行和列以将非零值组合在一起。聚类一个稀疏的共生矩阵
由于我正在使用Python进行此任务,因此我查看了SciPy Sparse Linear Algebra库,但找不到要查找的内容。
任何帮助,非常感谢。提前致谢。
我有两个N×N共生矩阵(484×484和1060×1060),我必须分析。矩阵沿着对角线是对称的并包含大量的零值。非零值是整数。我想将非零的位置分组在一起。换句话说,我想要做的是算法on this link。当按群集排序被选中时,矩阵被重新排列成行和列以将非零值组合在一起。聚类一个稀疏的共生矩阵
由于我正在使用Python进行此任务,因此我查看了SciPy Sparse Linear Algebra库,但找不到要查找的内容。
任何帮助,非常感谢。提前致谢。
如果矩阵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_
,它具有到每个样本所属的簇的数目给出。几点意见:
affinity="precomputed"
选项告诉它我们正在使用预先计算的距离)。dist=1 - data/data.max()
)因为您的数据很稀疏,所以将其视为图表,而不是矩阵。
然后尝试各种图形聚类方法。例如派系对这些数据感兴趣。
请注意,并非所有的东西都可能聚集在一起。