scipy.cluster.hierarchy.

cut_tree#

scipy.cluster.hierarchy.cut_tree(Z, n_clusters=None, height=None)[source]#

给定一个连接矩阵 Z,返回切割树。

参数:
Zscipy.cluster.linkage 数组

连接矩阵。

n_clustersarray_like, 可选

切割点处树中的簇的数量。

heightarray_like, 可选

切割树的高度。仅适用于超度量树。

返回值:
cutree数组

一个数组,指示每个聚集步骤中的组成员身份。即,对于一个完整的切割树,在第一列中,每个数据点都在其自身的簇中。在下一步中,两个节点被合并。最后,所有的单例和非单例簇都在一个组中。如果给定了 n_clustersheight,则列对应于 n_clustersheight 的列。

说明

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

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

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

示例

>>> from scipy import cluster
>>> import numpy as np
>>> from numpy.random import default_rng
>>> rng = default_rng()
>>> X = rng.random((50, 4))
>>> Z = cluster.hierarchy.ward(X)
>>> cutree = cluster.hierarchy.cut_tree(Z, n_clusters=[5, 10])
>>> cutree[:10]
array([[0, 0],
       [1, 1],
       [2, 2],
       [3, 3],
       [3, 4],
       [2, 2],
       [0, 0],
       [1, 5],
       [3, 6],
       [4, 7]])  # random