Можно ли печатать дерево решений в scikit-learn?

Есть ли способ напечатать обученное дерево решений в scikit-learn? Я хочу обучить дерево решений для моей диссертации, и я хочу поместить картину дерева в тезис. Это возможно?

Ответ 1

Существует способ экспорта в формат graph_viz: http://scikit-learn.org/stable/modules/generated/sklearn.tree.export_graphviz.html

Поэтому из онлайн-документов:

>>> from sklearn.datasets import load_iris
>>> from sklearn import tree
>>>
>>> clf = tree.DecisionTreeClassifier()
>>> iris = load_iris()
>>>
>>> clf = clf.fit(iris.data, iris.target)
>>> tree.export_graphviz(clf,
...     out_file='tree.dot')    

Затем вы можете загрузить это с помощью графика, или если у вас установлен pydot, вы можете сделать это более непосредственно: http://scikit-learn.org/stable/modules/tree.html

>>> from sklearn.externals.six import StringIO  
>>> import pydot 
>>> 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") 

Будет генерировать svg, не может отобразить его здесь, поэтому вам нужно будет перейти по ссылке: http://scikit-learn.org/stable/_images/iris.svg

Обновить

Кажется, что произошли изменения в поведении, так как я впервые ответил на этот вопрос, и теперь он возвращает list и, следовательно, вы получаете эту ошибку:

AttributeError: 'list' object has no attribute 'write_pdf'

Во-первых, когда вы видите это, стоит просто распечатать объект и проверить объект, и, скорее всего, вы хотите, это первый объект:

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

Спасибо @NickBraunagel за комментарий

Ответ 2

Хотя я опаздываю на игру, приведенные ниже подробные инструкции могут быть полезны для других, которые хотят отображать вывод дерева решений:

Установите необходимые модули:

  1. установить graphviz. Я использовал установочный пакет pip install graphviz здесь (рекомендуется по pip install graphviz поскольку pip install не включает в себя фактические исполняемые файлы GraphViz)
  2. установить pydot через pip (pip install pydot)
  3. Добавьте каталог папки graphviz, содержащий файлы.exe (например, dot.exe) в переменную среды PATH
  4. запустите EdChum выше (ПРИМЕЧАНИЕ: graph - это list содержащий объект pydot.Dot):

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)

dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 

graph[0].write_pdf("iris.pdf")  # must access graph first element

Теперь вы найдете "iris.pdf" в своем каталоге по умолчанию для среды