Как получить изображения с высоким разрешением с PyDotPlus и Graphviz? - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужно экспортировать в высоком разрешении визуализацию деревьев решений.Graphviz отлично работает для создания изображений, и я использовал PyDotPlus для настройки цветов, но я не мог найти способ экспортировать их в высоком разрешении (по крайней мере, FullHD).

Я пытался this , но, очевидно, после того, как я использую PyDotPlus, объект больше не является точечным, поэтому простая команда оболочки не работала.Вот код.

from sklearn.datasets import load_iris
import pydotplus
import numpy
iris = load_iris()

FEATURES = ['Sepal length (cm)','Sepal width (cm)','Petal length (cm)','Petal width (cm)']
CLASS = ['Iris setosa','Iris versicolor','Iris virginica']

# Model
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=1)

# Train
model.fit(iris.data, iris.target)

from sklearn.tree import export_graphviz
dot_data = export_graphviz(model,
                                feature_names=FEATURES,
                                out_file=None,
                                class_names = CLASS,
                                filled=True,
                                proportion = False,
                                precision = 2,
                                rounded=True,
                                )

graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()

colors =  ('lightskyblue3', 'green2', 'lightcoral', 'white')

for node in nodes:
    if node.get_name() not in ('node', 'edge'):
        values = model.tree_.value[int(node.get_name())][0]
        #color only nodes where only one class is present
        if max(values) == sum(values):    
            node.set_fillcolor(colors[numpy.argmax(values)])
        #mixed nodes get the default color
        else:
            node.set_fillcolor(colors[-1])

graph.write_png('Tree.png')       

# Display in jupyter notebook
from IPython.display import Image
Image(filename = 'Tree.png')

Хотя я мог настроить функцию "write_png", но я не нашел никакой документации по этому поводу.Когда я использую «помощь», все, что я получаю, это

Help on function <lambda> in module pydotplus.graphviz:  
<lambda> lambda path, f='png', prog='dot'
Refer to the docstring accompanying the'write' method for more information.

Извините, я знаю, что это кажется очень наивным, но я просто не мог обойти это.Полученные изображения хороши для визуализации, но не для бумаги.Какие-нибудь советы?Заранее спасибо.

...