Использование graphviz для построения дерева решений на Python

Я следую ответу, представленному в предыдущем сообщении: Можно ли распечатать дерево решений в scikit-learn?

from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.externals.six import StringIO  
import pydot

clf = tree.DecisionTreeClassifier()
iris = load_iris()

clf = clf.fit(iris.data, iris.target)
tree.export_graphviz(clf,    out_file='tree.dot')
dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

К сожалению, я не могу понять следующую ошибку:

'list' object has no attribute 'write_pdf'

Кто-нибудь знает способ обойти это, поскольку структура сгенерированного файла tree.dot представляет собой список?

Обновить

Я попытался использовать веб-приложение http://webgraphviz.com/. Это работает, однако условия дерева решений вместе с классами не отображаются. Есть ли способ включить их в tree.dot файл?


person Sjoseph    schedule 31.08.2017    source источник


Ответы (1)


Похоже, данные, которые вы собираете в graph, относятся к типу list.

graph = pydot.graph_from_dot_data(dot_data.getvalue())
type(graph)
<type 'list'>

Нас интересует только первый элемент списка. Вы можете сделать это одним из двух способов:

1) Измените строку, в которой вы собираете значение dot_data в graph, на

(graph, ) = pydot.graph_from_dot_data(dot_data.getvalue())

2) Или собрать весь список в graph, но просто использовать первый элемент для отправки в pdf

graph[0].write_pdf("iris.pdf")

Вот что я получаю в результате iris.pdf

введите здесь описание изображения Обновить

Чтобы обойти ошибку пути,

Исключение: «dot.exe» не найден в пути.

Установите graphviz из здесь

Затем используйте в своем коде одно из следующих.

import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

Или просто добавьте следующий путь к своему пути к Windows в панели управления.

C: \ Program Files (x86) \ Graphviz2.38 \ bin

Согласно graphviz документации, он не добавляется в путь Windows во время установки.

person Anil_M    schedule 31.08.2017
comment
Спасибо за Ваш ответ. Я играл с аналогичными решениями, но остался с ошибкой dot.exe, не найденной в пути. Читая вокруг, я думаю, что эта ошибка связана с моей установкой Graphiz? - person Sjoseph; 31.08.2017
comment
Пожалуйста, просмотрите мои правки для ошибки пути. если это решит вашу проблему, рассмотрите возможность принятия в качестве ответа, чтобы закрыть цикл. - person Anil_M; 31.08.2017