У меня есть матрица расстояний, насчитывающая около 5000 записей, и использую scipy иерархические методы кластеризации для кластеризации матрицы. Код, который я использую для этого, следующий фрагмент:
Y = fastcluster.linkage(D, method='centroid') # D-distance matrix
Z1 = sch.dendrogram(Y,truncate_mode='level', p=7,show_contracted=True)
Поскольку дендрограмма станет достаточно плотной со всеми этими данными, я использую truncate_mode, чтобы немного ее обрезать. Все это работает, но мне интересно, как я могу узнать, какая из первоначальных 5000 записей принадлежит определенной ветке в дендрограмме.
Я попытался использовать
leaves = sch.leaves_list(Y)
чтобы получить список листьев, но это использует вывод linkage как indata, и пока я вижу соответствие между обрезанной дендрограммой и списком листьев, становится немного громоздким сопоставление оригинальных записей вручную с дендрограммой.
Подводя итог: есть ли способ перечисления всех исходных записей в матрице расстояний, которая принадлежит ветке в обрезанной дендрограмме? Или есть другие способы сделать это, о которых я не знаю.
Спасибо