scipy.cluster.hierarchy.cophenet

scipy.cluster.hierarchy.cophenet(Z, Y=None)[源代码]

计算由链接定义的层次聚类中的每个观察点之间的共生距离 Z

假设 pq 是不相交群集中的原始观测 st ,分别和 st 由一个直接的父聚类加入 u 。观测之间的共生距离 ij 简单地说就是星系团之间的距离 st

参数
Zndarray

编码为数组的层次聚类(请参见 linkage 函数)。

Yndarray(可选)

计算共生相关系数 c 由链接矩阵定义的分层聚类的 Z 一组 \(n\) 中的观测值 \(m\) 尺寸标注。 Y 是凝聚的距离矩阵,从该距离矩阵 Z 都是生成的。

退货
cndarray

同源相关距离(IF Y 通过)。

dndarray

凝聚形式的共生距离矩阵。这个 \(ij\) 此条目是原始观测之间的共生距离 \(i\)\(j\)

参见

linkage

有关链接矩阵是什么的说明,请参阅。

scipy.spatial.distance.squareform

将凝聚矩阵转化为平方矩阵。

示例

>>> from scipy.cluster.hierarchy import single, cophenet
>>> from scipy.spatial.distance import pdist, squareform

给定一个数据集 X 和链接矩阵 Z 的两点之间的共生距离。 X 是每个点最大的两个不同簇之间的距离:

>>> X = [[0, 0], [0, 1], [1, 0],
...      [0, 4], [0, 3], [1, 4],
...      [4, 0], [3, 0], [4, 1],
...      [4, 4], [3, 4], [4, 3]]

X 对应于此数据集::

x x    x x
x        x

x        x
x x    x x
>>> Z = single(pdist(X))
>>> Z
array([[ 0.,  1.,  1.,  2.],
       [ 2., 12.,  1.,  3.],
       [ 3.,  4.,  1.,  2.],
       [ 5., 14.,  1.,  3.],
       [ 6.,  7.,  1.,  2.],
       [ 8., 16.,  1.,  3.],
       [ 9., 10.,  1.,  2.],
       [11., 18.,  1.,  3.],
       [13., 15.,  2.,  6.],
       [17., 20.,  2.,  9.],
       [19., 21.,  2., 12.]])
>>> cophenet(Z)
array([1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2.,
       2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 2., 2.,
       2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.,
       1., 1., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 1., 1., 1.])

的输出 scipy.cluster.hierarchy.cophenet 方法以精简形式表示。我们可以利用 scipy.spatial.distance.squareform 要以常规矩阵形式查看输出(其中每个元素 ij 表示它们之间的共生距离 ij 中的一对点 X ):

>>> squareform(cophenet(Z))
array([[0., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [1., 0., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [1., 1., 0., 2., 2., 2., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 0., 1., 1., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 1., 0., 1., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 1., 1., 0., 2., 2., 2., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 0., 1., 1., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 1., 0., 1., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 1., 1., 0., 2., 2., 2.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 0., 1., 1.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 0., 1.],
       [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 0.]])

在此示例中,上的点之间的共面距离 X 对于其他点对是2,因为这些点将位于不同角落的簇中-因此,这些簇之间的距离将更大。