我有一个距离矩阵 n*n M
,其中和M_ij
之间的距离。正如预期的那样,它采用以下形式:object_i
object_j
/ 0 M_01 M_02 ... M_0n\
| M_10 0 M_12 ... M_1n |
| M_20 M_21 0 ... M2_n |
| ... |
\ M_n0 M_n2 M_n2 ... 0 /
现在我希望用层次聚类对这 n 个对象进行聚类。Python 有一个名为scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean')
.
它的文档说:
y 必须是一个 {n \choose 2} 大小的向量,其中 n 是在距离矩阵中配对的原始观测值的数量。
y : 数组
一个压缩的或冗余的距离矩阵。压缩距离矩阵是包含距离矩阵的上三角形的平面阵列。这是 pdist 返回的形式。或者,可以将 n 维中的 m 个观察向量的集合作为 m × n 数组传递。
我对这个描述感到困惑y
。我可以直接输入我M
的输入y
吗?
更新
@hongbo-zhu-cn在 GitHub 上提出了这个问题。这正是我所关心的。但是,作为 GitHub 的新手,我不知道它是如何工作的,因此不知道如何处理这个问题。