当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy hierarchy.cophenet用法及代码示例


本文简要介绍 python 语言中 scipy.cluster.hierarchy.cophenet 的用法。

用法:

scipy.cluster.hierarchy.cophenet(Z, Y=None)#

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

假设 pq 分别是不相交集群 st 中的原始观测值,并且 st 由直接父集群 u 加入。观测值 ij 之间的共同距离就是聚类 st 之间的距离。

参数

Z ndarray

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

Y ndarray(可选)

计算共生相关系数c由链接矩阵定义的层次聚类Z的一组\(n\) 中的观察\(m\) 维度。Y是压缩距离矩阵,其中Z生成了。

返回

c ndarray

cophentic 相关距离(如果通过Y)。

d ndarray

压缩形式的共生距离矩阵。 th 条目是原始观测值 之间的共同距离。

例子

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

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

>>> 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 表示 X 中每个点对 ij 之间的共表距离):

>>> 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 上非常接近(即在同一个角落)的点之间的共同距离为 1。对于其他点对为 2,因为这些点将位于不同角落的集群中 - 因此,这些簇之间的距离会更大。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.cluster.hierarchy.cophenet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。