SciPy - cophenet() 方法

SciPy cophenet() 方法计算层次聚类中每个观测值之间的共表象距离。这些聚类使用链接定义,链接显示了聚类的分裂。

共表象距离计算两点之间的距离,以树状图表示。树状图显示了对象之间的层次关系。

语法

以下是 SciPy cophenet() 方法的语法 −

cophenet(Z, pdist(data))

参数

此方法接受两个参数 −

  • Z:此参数存储 linkage() 方法。
  • pdist(data):用于定义数据的成对分布。

返回值

此方法返回浮点值作为结果。

示例1

以下是说明 SciPy cophenet() 方法用法的基本程序。

import numpy as np
from scipy.cluster.hierarchy import linkage, cophenet
from scipy.spatial.distance import pdist

# 给定二维点的数据
data = np.array([[10, 20], [20, 30], [30, 40], [50, 60], [80, 90]])

# 层次聚类
Z = linkage(data, method='single')

# 共表型相关系数
c, d = cophenet(Z, pdist(data))

print(f"共表型相关系数的值:{c}")

输出

上述代码产生以下输出 −

共表型相关系数:0.8355044182110838

示例 2

此程序显示共表型相关系数的值使用完整链接方法。

import numpy as np
from scipy.cluster.hierarchy import linkage, cophenet
from scipy.spatial.distance import pdist

# 给定 2d 点的数据
data = np.array([[10, 20], [20, 30], [30, 40], [50, 60], [80, 90]])

# 使用"完整"链接方法执行层次聚类
Z_complete = linkage(data, method='complete')

# 共表型相关系数
c_complete, d_complete = cophenet(Z_complete, pdist(data))

print(f"共表型相关系数的值(使用完整方法):{c_complete}")

输出

上述代码产生以下输出 −

共表型相关系数的值(使用完整方法):0.7173095078886984

示例 3

下面的程序说明了使用平均链接方法得到的共表型相关系数的值。

import numpy as np
from scipy.cluster.hierarchy import linkage, cophenet
from scipy.spatial.distance import pdist

# 给定二维点的数据
data = np.array([[11, 22], [22, 33], [33, 44], [55, 66], [88, 99]])

# 给定五维点的数据
data_high_dim = np.random.rand(10, 5)

# 层次聚类
Z_high_dim = linkage(data_high_dim, method='average')

# 共表型相关系数
c_high_dim, d_high_dim = cophenet(Z_high_dim, pdist(data_high_dim))

print(f"共表型相关系数的值(高维):{c_high_dim}")

输出

上述代码产生以下输出 −

共表型相关系数的值(高维):0.6727006277242108

scipy_reference.html