我有兩個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()
)因爲您的數據很稀疏,所以將其視爲圖表,而不是矩陣。
然後嘗試各種圖形聚類方法。例如派系對這些數據感興趣。
請注意,並非所有的東西都可能聚集在一起。