«.dot» не найден в пути - после добавления PATH в переменные среды Windows - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь визуализировать случайный лес, используя Graphviz2.Код, который я использую, приведен ниже.Однако, когда я пытаюсь прочитать файл .dot, он выдает следующую ошибку:

FileNotFoundError: [WinError 2] «точка» не найдена в пути

У меня естьвидел, как другие люди сталкивались с этой ошибкой и решили ее, изменив переменные среды Windows.Я добавил следующее в PATH:

C: \ Program Files (x86) \ Graphviz2.38 \ bin;
C: \ Program Files (x86) \ Graphviz2.38 \;
C: \ Users \ Adarsh ​​\ Anaconda3 \ Lib \ site-packages \ graphviz

Ничего из этого не работает.

import pickle
filename = '11f_rf_roc91.sav'
loaded_model = pickle.load(open(filename, 'rb'))

import os
from sklearn.tree import export_graphviz
import six
import pydot
from sklearn import tree
dotfile = six.StringIO()
i_tree = 0
for tree_in_forest in loaded_model.estimators_:
    export_graphviz(tree_in_forest, out_file='tree.dot', feature_names = list(X), class_names = ["0", "1"], rounded = True, proportion = False, precision = 2, filled = True)
    (graph,) = pydot.graph_from_dot_file('tree.dot')
    name = 'tree' + str(i_tree)
    graph.write_png(name+  '.png')
    os.system('dot -Tpng tree.dot -o tree.png')
    i_tree +=1

1 Ответ

1 голос
/ 08 апреля 2019

Упомянутые пути в порядке. Возникла проблема с самим файлом dot_data. Смотрите встроенные комментарии тоже для ясности.

# все операторы импорта здесь в соответствии с соглашением Python PEP.

import os
import pydot
import pickle

from sklearn import tree
from sklearn.tree import export_graphviz     # this can be even > import export_graphviz <
from sklearn.externals.six import StringIO   # shortened StringIO instead of six.StringIO

filename = '11f_rf_roc91.sav'
loaded_model = pickle.load(open(filename, 'rb'))

dot_data = StringIO()          # this is data not filename "dotfile".
i_tree = 0

for tree_in_forest in loaded_model.estimators_:
    export_graphviz(tree_in_forest, 
                    out_file      = dot_data,    # now linked to correct file data
                    feature_names = list(X),     # X seems not to be defined.
                    class_names   = ["0", "1"], 
                    rounded       = True, 
                    proportion    = False, 
                    precision     = 2, 
                    filled        = True)

    graph = pydot.graph_from_dot_file(dot_data)
    name = 'tree' + str(i_tree)
    graph.write_png(name+  '.png')
    os.system('dot -Tpng tree.dot -o tree.png')
    i_tree += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...