我有一个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:ndarray 压缩或冗余的距离矩阵。压缩的距离矩阵是包含距离矩阵上三角的扁平数组。这是pdist返回的格式。 或者,m个n维观测向量的集合可以作为m乘以n的数组传递。
这个关于
y
的描述让我感到困惑。我能直接把我的M
作为输入的y
吗?
更新
@hongbo-zhu-cn已在GitHub上提出了此问题。这正是我所担心的。然而,作为一个GitHub的新手,我不知道它是如何运作的,因此不知道如何处理这个问题。