Я пытаюсь преобразовать результаты scipy иерархической кластеризации в json для отображения в d3.js здесь пример
В следующих кодах создается дендрограмма с 6 ветвями.
import pandas as pd
import scipy.spatial
import scipy.cluster
d = {'employee' : ['A', 'B', 'C', 'D', 'E', 'F'],
'skillX': [2,8,3,6,8,10],
'skillY': [8,15,6,9,7,10]}
d1 = pd.DataFrame(d)
distMat = xPairWiseDist = scipy.spatial.distance.pdist(np.array(d1[['skillX', 'skillY']]), 'euclidean')
clusters = scipy.cluster.hierarchy.linkage(distMat, method='single')
dendo = scipy.cluster.hierarchy.dendrogram(clusters, labels = list(d1.employee), orientation = 'right')
dendo
мой вопрос Как я могу представить данные в json файле в формате, который d3.js понимает
{'name': 'Root1’,
'children':[{'name' : 'B'},
{'name': 'E-D-F-C-A',
'children' : [{'name': 'C-A',
'children' : {'name': 'A'},
{'name' : 'C'}]
}
}
]
}
Смущающая правда заключается в том, что я не знаю, могу ли я извлечь эту информацию из дендограммы или из матрицы связей и , как
Я благодарен за любую помощь, которую я могу получить.
ИЗМЕНИТЬ, ЧТОБЫ ЗАКРЫТЬ
До сих пор я пытался использовать метод totree, но с трудом понимал его структуру (да, я читал документацию).
a = scipy.cluster.hierarchy.to_tree(clusters , rd=True)
for x in a[1]:
#print x.get_id()
if x.is_leaf() != True :
print x.get_left().get_id(), x.get_right().get_id(), x.get_count()