если у вас есть этот иерархический вызов кластеризации в scipy в Python:
from scipy.cluster.hierarchy import linkage
# dist_matrix is long form distance matrix
linkage_matrix = linkage(squareform(dist_matrix), linkage_method)
то какой эффективный способ перейти от этого к кластерным назначениям для отдельных точек? т.е. вектор длины N
, где N
- количество точек, где каждая запись i
- это номер кластера точки i
, учитывая количество кластеров, генерируемых заданным порогом thresh
, на полученную кластеризацию
Чтобы уточнить: номер кластера был бы кластером, который он использовал после применения порога к дереву. В этом случае вы получите уникальный кластер для каждого листа node для кластера, в котором он находится. Уникальный в том смысле, что каждая точка принадлежит к одному "наиболее определенному кластеру", который определяется порогом, где вы сокращаете дендрограмму.
Я знаю, что scipy.cluster.hierarchy.fclusterdata
дает вам это назначение кластера в качестве возвращаемого значения, но я начинаю с настраиваемой матрицы расстояния и метрики расстояния, поэтому я не могу использовать fclusterdata
. Вопрос сводится к следующему: как я могу вычислить, что fclusterdata
вычисляет - кластерные назначения?