Как мне заставить dot выводить свой узел?

Я использую pydotplus для анализа точечного файла. Функция graph = pydotplus.graph_from_dot_file(dot_file) возвращает объект pydotplus.graphviz.Dot, я хочу распечатать узлы графа, информацию о краях, сохранить и использовать содержимое в моей программе на Python. Кажется, DOT - это особый класс, я не могу распечатать его содержимое. Как получить контент (узлы, края), чтобы я мог сохранить и использовать его в своей структуре данных с помощью Python?

В чем проблема?

Matthieu Brucher 31.10.2018 12:59
0
1
472
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Класс Dot наследуется от класса Graph, который имеет методы get_nodes () и get_edges (). Вот пример получения данных об узлах и ребрах.

import pydotplus
from sklearn import tree

# Data Collection
X = [[180, 15, 0],
     [177, 42, 0],
     [136, 35, 1],
     [174, 65, 0],
     [141, 28, 1]]

Y = ['1', '2', '1', '2', '1']

data_feature_names = ['a', 'b', 'c']

# Training
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

dot_data = tree.export_graphviz(clf,
                                feature_names=data_feature_names,
                                out_file=None,
                                filled=True,
                                rounded=True)
graph = pydotplus.graph_from_dot_data(dot_data)
print(graph.to_string())

for node in graph.get_nodes():
    print(node.get_name())
    print(node.get_port())
    print(node.to_string())
    print(node.obj_dict)

for edge in graph.get_edges():
    print(edge.get_source())
    print(edge.get_destination())
    print(edge.to_string())
    print(edge.obj_dict)

Другие вопросы по теме