Я делаю несколько тестов агломерационной кластеризации с библиотекой sklearn.cluster, но не могу распечатать иерархию полученных классов.Мне нужно иметь возможность получить иерархию, pe [[1, [3,2]], [5, [[0, 4], 6]].Это означает, что «класс 1 имеет класс 3 как левого ребенка и класс 2 как правого ребенка.
Возможно ли получить что-то подобное?
Мой код:
import pandas as pd
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster import hierarchy
import numpy as np
json_message = {
"dataDesc": {
"data": {
"coords1": [5.1, 3.5, 1.4, 0.2],
"coords2": [5.8, 4.0, 1.2, 0.2],
"coords3": [5.7, 4.4, 1.5, 0.4],
"coords4": [5.4, 3.9, 1.3, 0.4],
"coords5": [5.1, 3.5, 1.4, 0.3],
"coords6": [5.7, 3.8, 1.7, 0.3],
"coords8": [5.1, 3.8, 1.5, 0.2],
"coords9": [5.4, 3.4, 1.7, 0.3],
"coords10": [5.1, 3.7, 1.5, 0.4],
"coords11": [4.6, 3.6, 1.0, 0.2]
},
"expression": "coords"
},
"options": {
"distanceType": "euclidean",
"linkage": "ward",
"n_clusters": 4
}
}
df = pd.DataFrame.from_dict(json_message['dataDesc']['data'], orient='index')
result = AgglomerativeClustering(n_clusters=json_message['options']['n_clusters'],
affinity=json_message['options']['distanceType'],
linkage=json_message['options']['linkage']).fit(df)
print(result.labels_)
Вывод:
[3 0 0 0 3 1 3 1 3 2]
Но я хочу иметь иерархию классов.
Я пытался сделать то же самое с scipy.hierarchy, но только показывает иерархию, не имеет информации для ее печати.
Код:
items = np.array(list(json_message["dataDesc"]['data'].values()))
hier = hierarchy.linkage(items, 'single')
value = hierarchy.dendrogram(hier)
И сгенерированный вывод:
Изображение показывает то, что я действительно хочу, но мне нужна иерархия в тексте, а не в виде изображения.Я видел документацию, но не получил ответа.