Ошибка значения: привязка ‘Z’ использует один и тот же кластер более одного раза в Python scipy fcluster

#python #numpy #scipy #hierarchical-clustering

#python #numpy #scipy #иерархическая кластеризация

Вопрос:

Я получаю ValueError: Linkage 'Z' uses the same cluster more than once. при попытке получить плоские кластеры в Python с помощью scipy.cluster.hierarchy.fcluster. Эта ошибка возникает лишь иногда, обычно только с действительно большими матрицами, т.Е. 10000×10000.

 import scipy.cluster.hierarchy as sch
Z = sch.linkage(d, method="ward")
# some computation here, returning n (usually between 5-30)
clusters = sch.fcluster(Z, t=n, criterion='maxclust')
  

Почему это происходит? Как я могу этого избежать? К сожалению, я не смог найти никакой полезной информации в Google…

Ошибка РЕДАКТИРОВАНИЯ возникает также при попытке получить дендрограмму. Такая ошибка не появляется, если используется method='average' .

Ответ №1:

Кажется, что использование fastcluster вместо scipy.cluster.hierarchy решения проблемы. Кроме того, fastcluster реализация немного быстрее, чем scipy .
Для получения более подробной информации взгляните на статью.

 import fastcluster
Z = fastcluster.linkage(d, method="ward")
# some computation here, returning n (usually between 5-30)
clusters = fastcluster.fcluster(Z, t=n, criterion='maxclust')