У меня есть 2D бинарная матрица. Я использую функцию связывания для иерархической кластеризации. Я могу получить дендрограмму после выполнения кластеризации. Но то, что я хочу, это матрица, которая сортируется в соответствии с этой кластеризацией.
Например:
X = np.array([[0,0,0,0,0,1,0,0,0,1,0,0,0,0],[0,0,1,0,0,0,1,1,0,0,0,1,0,0],[0,0,0,0,0,1,0,0,1,0,1,0,0,1],
[1,0,1,0,0,0,1,1,0,0,0,0,0,0],
[0,1,1,0,0,0,1,1,0,0,0,0,0,0],
[1,0,1,0,0,0,1,1,0,0,0,0,0,0]])
Этот иерархический массив должен выглядеть следующим образом после выполнения иерархической кластеризации:
res = np.array([[1,0,1,0,0,0,1,1,0,0,0,0,0,0],[1,0,1,0,0,0,1,1,0,0,0,0,0,0],[0,0,1,0,0,0,1,1,0,0,0,1,0,0],
[0,1,1,0,0,0,1,1,0,0,0,0,0,0,
[0,0,0,0,0,1,0,0,0,1,0,0,0,0],
[0,0,0,0,0,1,0,0,0,1,0,0,0,0]])
Пока мой код выглядит следующим образом:
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
linked = linkage(X, 'centroid')
labelList = range(1, 7)
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
labels=labelList,
distance_sort='descending',
show_leaf_counts=True)
plt.show()
Как мне получить массив с тем же порядком, что и у дендограммы? Помощь будет оценена.