Как я могу напечатать иерархию кластеров с помощью методов склеарна или scipy кластеризации? - PullRequest
0 голосов
/ 17 апреля 2019

Я делаю несколько тестов агломерационной кластеризации с библиотекой 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)

И сгенерированный вывод:

enter image description here

Изображение показывает то, что я действительно хочу, но мне нужна иерархия в тексте, а не в виде изображения.Я видел документацию, но не получил ответа.

...