scipy.cluster.hierarchy.

maxRstat#

scipy.cluster.hierarchy.maxRstat(Z, R, i)[source]#

返回每个非单例簇及其子簇的最大统计量。

参数:
Zarray_like

层级聚类编码为矩阵。 参见 linkage 获取更多信息。

Rarray_like

不一致矩阵。

iint

要用作统计量的 R 的列。

返回:
MRndarray

计算每个非单例簇节点的不一致矩阵 R 的第 i 列的最大统计量。 MR[j]R[Q(j)-n, i] 的最大值,其中 Q(j) 是对应于 j 之下和包括 j 的所有节点的节点 ID 的集合。

参见

linkage

有关连接矩阵的描述。

inconsistent

用于创建不一致矩阵。

注释

maxRstat 除了 NumPy 之外,还实验性地支持 Python Array API Standard 兼容后端。 请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。 支持以下后端和设备(或其他功能)的组合。

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

Dask

⚠️ 合并块

n/a

有关更多信息,请参见 对数组 API 标准的支持

示例

>>> from scipy.cluster.hierarchy import median, inconsistent, maxRstat
>>> from scipy.spatial.distance import pdist

给定数据集 X,我们可以应用聚类方法来获得连接矩阵 Zscipy.cluster.hierarchy.inconsistent 也可用于获取与此聚类过程相关的不一致矩阵 R

>>> 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]]
>>> Z = median(pdist(X))
>>> R = inconsistent(Z)
>>> R
array([[1.        , 0.        , 1.        , 0.        ],
       [1.        , 0.        , 1.        , 0.        ],
       [1.        , 0.        , 1.        , 0.        ],
       [1.        , 0.        , 1.        , 0.        ],
       [1.05901699, 0.08346263, 2.        , 0.70710678],
       [1.05901699, 0.08346263, 2.        , 0.70710678],
       [1.05901699, 0.08346263, 2.        , 0.70710678],
       [1.05901699, 0.08346263, 2.        , 0.70710678],
       [1.74535599, 1.08655358, 3.        , 1.15470054],
       [1.91202266, 1.37522872, 3.        , 1.15470054],
       [3.25      , 0.25      , 3.        , 0.        ]])

scipy.cluster.hierarchy.maxRstat 可用于计算 R 的每列的最大值,对于每个非单例簇及其子簇

>>> maxRstat(Z, R, 0)
array([1.        , 1.        , 1.        , 1.        , 1.05901699,
       1.05901699, 1.05901699, 1.05901699, 1.74535599, 1.91202266,
       3.25      ])
>>> maxRstat(Z, R, 1)
array([0.        , 0.        , 0.        , 0.        , 0.08346263,
       0.08346263, 0.08346263, 0.08346263, 1.08655358, 1.37522872,
       1.37522872])
>>> maxRstat(Z, R, 3)
array([0.        , 0.        , 0.        , 0.        , 0.70710678,
       0.70710678, 0.70710678, 0.70710678, 1.15470054, 1.15470054,
       1.15470054])