scipy.cluster.hierarchy.

cut_tree#

scipy.cluster.hierarchy.cut_tree(Z, n_clusters=None, height=None)[источник]#

По заданной матрице связей Z вернуть обрезанное дерево.

Параметры:
Zмассив scipy.cluster.linkage

Матрица связей.

n_clustersarray_like, необязательный

Количество кластеров в дереве в точке разреза.

heightarray_like, необязательный

Высота, на которой производится обрезка дерева. Возможно только для ультраметрических деревьев.

Возвращает:
cutreeмассив

Массив, указывающий принадлежность к группе на каждом шаге агломерации. Т.е., для полного разрезанного дерева, в первом столбце каждая точка данных находится в своем собственном кластере. На следующем шаге два узла объединяются. Наконец, все одиночные и неодиночные кластеры находятся в одной группе. Если n_clusters или height заданы, столбцы соответствуют столбцам n_clusters или height.

Примечания

cut_tree имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

Dask

н/д

См. Поддержка стандарта array 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