Сокращение дендрограммы в scipy (иерархическая кластеризация)

У меня есть матрица расстояний с примерно 5000 элементами, и я использую методы иерархической кластеризации scipy для кластеризации матрицы. Код, который я использую для этого, представляет собой следующий фрагмент :

Y = fastcluster.linkage(D, method='centroid') # D-distance matrix
Z1 = sch.dendrogram(Y,truncate_mode='level', p=7,show_contracted=True)

. Поскольку дендрограмма станет довольно плотной со всеми этими данными, я использую режим усечения _, чтобы немного ее обрезать. Все это работает, но мне интересно, как я могу узнать, какие из исходных 5000 записей принадлежат определенной ветви в дендрограмме.

Я попытался использовать

 leaves = sch.leaves_list(Y)

для получения списка листьев, но это использует выходные данные связи как данные, и хотя я вижу соответствие между сокращенной дендрограммой и списком листьев -, это становится немного громоздким для сопоставьте исходные записи вручную с дендрограммой.

Подводя итоги :Есть ли способ перечислить все исходные записи в матрице расстояний, которые принадлежат ветви усеченной дендрограммы? Или есть другие способы сделать это, о которых я не знаю.

Спасибо

13
задан user1354607 24 April 2012 в 19:56
поделиться