Как вычислить кластерные назначения из матриц связи / расстояния в Scipy в Python?
если у вас есть этот вызов иерархической кластеризации в 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
на результирующую кластеризацию?
Для пояснения: номер кластера будет кластером, в котором он находится после применения порога к дереву. В этом случае вы получите уникальный кластер для каждого конечного узла для кластера, в котором он находится. Уникальный в том смысле, что каждая точка принадлежит одному «наиболее специфическому кластеру», который определяется порогом, в котором вы обрезаете дендрограмму.
я знаю этоscipy.cluster.hierarchy.fclusterdata
дает вам это кластерное назначение в качестве возвращаемого значения, но я начинаю с пользовательской матрицы расстояний и метрики расстояния, поэтому я не могу использоватьfclusterdata
, Вопрос сводится к тому, как я могу вычислить, чтоfclusterdata
такое вычисления - кластерные назначения?