scipy.cluster.hierarchy.

optimal_leaf_ordering#

scipy.cluster.hierarchy.optimal_leaf_ordering(Z, y, метрика='euclidean')[источник]#

Дана матрица связей Z и расстояние, переупорядочить дерево разрезов.

Параметры:
Zndarray

Иерархическая кластеризация, закодированная как матрица связей. См. linkage для получения дополнительной информации о структуре возвращаемых данных и алгоритме.

yndarray

Сжатая матрица расстояний, из которой был сгенерирован Z. Альтернативно, коллекция из m векторов наблюдений в n измерениях может быть передана как массив размером m на n.

метрикаstr или функция, опционально

Метрика расстояния для использования в случае, когда y — это коллекция векторов наблюдений; в противном случае игнорируется. См. pdist функция для списка допустимых метрик расстояния. Также может использоваться пользовательская функция расстояния.

Возвращает:
Z_orderedndarray

Копия матрицы связей Z, переупорядоченная для минимизации расстояния между соседними листьями.

Примечания

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

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

Dask

⚠️ объединяет блоки

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Примеры

>>> import numpy as np
>>> from scipy.cluster import hierarchy
>>> rng = np.random.default_rng()
>>> X = rng.standard_normal((10, 10))
>>> Z = hierarchy.ward(X)
>>> hierarchy.leaves_list(Z)
array([0, 3, 1, 9, 2, 5, 7, 4, 6, 8], dtype=int32)
>>> hierarchy.leaves_list(hierarchy.optimal_leaf_ordering(Z, X))
array([3, 0, 2, 5, 7, 4, 8, 6, 9, 1], dtype=int32)