вернуть отсортированную матрицу после выполнения иерархической кластеризации в python - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть 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()  

Как мне получить массив с тем же порядком, что и у дендограммы? Помощь будет оценена.

...