лидеры#
- scipy.cluster.hierarchy.лидеры(Z, T)[источник]#
Возвращает корневые узлы в иерархической кластеризации.
Возвращает корневые узлы в иерархической кластеризации, соответствующие разрезу, определённому вектором назначения плоских кластеров
T. См.fclusterфункция для получения дополнительной информации о форматеT.Для каждого плоского кластера \(j\) из \(k\) плоские кластеры представленные в n-мерном векторе назначения плоских кластеров
T, эта функция находит узел кластера с наименьшим значением \(i\) в дереве связей Z, такое что:листовые потомки принадлежат только плоскому кластеру j (т.е.,
T[p]==jдля всех \(p\) в \(S(i)\), где \(S(i)\) является набором идентификаторов листьев для дочерних листовых узлов с кластерным узлом \(i\))не существует листа, который не является потомком с \(i\) который также принадлежит кластеру \(j\) (т.е.,
T[q]!=jдля всех \(q\) не в \(S(i)\)). Если это условие нарушается,Tне является допустимым вектором назначения кластеров, и будет выброшено исключение.
- Параметры:
- Zndarray
Иерархическая кластеризация, закодированная как матрица. Смотрите
linkageдля получения дополнительной информации.- Tndarray
Вектор назначения плоских кластеров.
- Возвращает:
- Lndarray
Идентификаторы узлов лидер-связи хранятся как k-элементный одномерный массив, где
kэто количество плоских кластеров, найденных вT.L[j]=i— это идентификатор узла кластера связей, который является лидером плоского кластера с идентификатором M[j]. Еслиi < n,iсоответствует исходному наблюдению, в противном случае соответствует кластеру с несколькими элементами.- Mndarray
Идентификаторы узлов ведущей связи хранятся как k-элементный одномерный массив, где
kэто количество плоских кластеров, найденных вT. Это позволяет набору идентификаторов плоских кластеров быть любым произвольным наборомkцелые числа.Например: если
L[3]=2иM[3]=8, лидером плоского кластера с id 8 является узел связывания 2.
Смотрите также
fclusterдля создания плоских назначений кластеров.
Примечания
Поддержка Array API (экспериментальная): Эта функция возвращает массивы с формой, зависящей от данных. В JAX, на момент написания, это делает невозможным её выполнение внутри @jax.jit.
leadersимеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окруженияSCIPY_ARRAY_API=1и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).Библиотека
CPU
GPU
NumPy
✅
н/д
CuPy
н/д
⛔
PyTorch
✅
⛔
JAX
⚠️ нет JIT
⛔
Dask
⚠️ объединяет блоки
н/д
См. Поддержка стандарта array API для получения дополнительной информации.
Примеры
>>> from scipy.cluster.hierarchy import ward, fcluster, leaders >>> from scipy.spatial.distance import pdist
Дана матрица связей
Z- получено после применения метода кластеризации к набору данныхX- и массив плоского назначения кластеровT:>>> 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 = ward(pdist(X)) >>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 2. , 12. , 1.29099445, 3. ], [ 5. , 13. , 1.29099445, 3. ], [ 8. , 14. , 1.29099445, 3. ], [11. , 15. , 1.29099445, 3. ], [16. , 17. , 5.77350269, 6. ], [18. , 19. , 5.77350269, 6. ], [20. , 21. , 8.16496581, 12. ]])
>>> T = fcluster(Z, 3, criterion='distance') >>> T array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)
scipy.cluster.hierarchy.leadersвозвращает индексы узлов в дендрограмме, которые являются лидерами каждого плоского кластера:>>> L, M = leaders(Z, T) >>> L array([16, 17, 18, 19], dtype=int32)
(помните, что индексы 0-11 указывают на 12 точек данных в
X, тогда как индексы 12-22 указывают на 11 строкZ)scipy.cluster.hierarchy.leadersтакже возвращает индексы плоских кластеров вT:>>> M array([1, 2, 3, 4], dtype=int32)