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 的列。

附注

数组 API 标准支持

cut_tree 对 Python Array API 标准兼容的后端具有实验性支持,除了 NumPy 之外。请考虑通过设置环境变量 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