我有三个矩阵进行比较。他们每个人都是5x6。我最初想要使用层次聚类来对矩阵进行聚类,以便在给定相似阈值的情况下对最相似的矩阵进行分组。距离矩阵的树形图或其他图
我在python中找不到任何这样的函数,所以我实现了手动距离度量,(p-norm where p=2)。现在我有一个3x3的距离矩阵(我认为这也是这种情况下的相似矩阵)。
我现在试图产生树状图。这是我的代码,这是错的。 I 想要产生显示最相似的矩阵的聚类的图(可能的树形图)。矩阵0,1,2,0和2是相同的,应该先聚集在一起,1是不同的。
的距离矩阵如下所示:
> 0 1 2
0 0.0 2.0 3.85e-16
1 2.0 0.0 2.0
2 3.85e-16 2.0 0.0
代码:
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt
import numpy as np
from scipy.cluster.hierarchy import linkage
mat = np.array([[0.0, 2.0, 3.8459253727671276e-16], [2.0, 0.0, 2.0], [3.8459253727671276e-16, 2.0, 0.0]])
dist_mat = mat
linkage_matrix = linkage(dist_mat, "single")
dendrogram(linkage_matrix, color_threshold=1, labels=["0", "1", "2"],show_leaf_counts=True)
plt.title=("test")
plt.show()
什么是联动(dist_mat的意思,“单“)?我假设输出图看起来像这样,其中距离为0和1之间的距离为2.0(例如)。
是否有更好的方法来表示这些数据?是否有一个函数可以用几个矩阵代替点,比较和形成距离矩阵,然后聚类?对于如何可视化这些矩阵之间的差异,我愿意接受其他建议。
这似乎是正确的,那就意味着一流的0和2的分组,然后他们两个用1分组高度是距离,并且由于(0,2)的簇具有约〜3.4的距离,所以一切正常。 – JeD
@JeD - 谢谢。是否有一个函数可以用几个矩阵代替点,比较和形成距离矩阵,然后聚类? – amc