/ / Python Decision Tree GraphViz - python, scikit-learn, graphviz, kropka, pydot

Drzewo decyzyjne Python GraphViz - python, scikit-learn, graphviz, dot, pydot

Próbuję zaimplementować drzewo decyzyjne za pomocąscikit uczy się, a następnie wizualizuje drzewo za pomocą Graphviz, które, jak rozumiem, jest standardowym wyborem do wizualizacji DT. Używam PyCharm, anaconda, Python 2.7 i OS X El Capitan. Zainstalowałem pydot i Graphviz z instalacją PIP, o ile wiem, i zainstalowałem je bezpośrednio w Pycharm, ale cokolwiek robię, ciągle otrzymuję „Nie moduł o nazwie graphviz ”.

from sklearn.datasets import load_iris
from sklearn import tree
#import graphviz as gv
# uncommenting the row above produces an error
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
with open("graph.dot", "w") as file:
tree.export_graphviz(clf, out_file = file)
file.close()

W tej chwili ten kod generujegraph.dot, ale nie mogę wyświetlić pliku. 1. Jak mogę uruchomić repozytorium graphviz? 2. Jak napisać wykres do PDF / PNG? Widziałem kilka przykładów, ale nie działa 3. Znalazłem to polecenie: dot -Tps nazwa_pliku.dot -o outfile.ps Gdzie go użyłem? W jaki sposób mogę sprawdzić, czy na moim OS X istnieje narzędzie dot?

Z góry dziękuję!

Odpowiedzi:

1 dla odpowiedzi № 1

Jestem pewien, że zainstalowałem graphviz przy użyciu homebrew, ale wygląda na to, że możesz także pobrać plik binarny z http://www.graphviz.org/Download_macos.php. Jeśli nie możesz „uruchomić pydota”, musisz uruchomić dot polecenie z terminala lub w skrypcie za pomocą podprocesu:

import subprocess
subprocess.call(["dot", "-Tpdf", "tree.dot", "-o" "tree.pdf"])

1 dla odpowiedzi nr 2

Możesz również użyć następującego kodu do eksportowania do pdf.

Najpierw zainstaluj pydot2

pip install pydot2

Następnie możesz użyć następującego kodu:

from sklearn.datasets import load_iris
from sklearn import tree
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)

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("graph.pdf")

0 dla odpowiedzi № 3

Jeśli nie masz / chcesz grafviz w swoim systemie, możesz również otworzyć pliki .dot jako tekst i skopiować zawartość do webgraphviz który następnie utworzy i wyświetli dla ciebie drzewo.

W rezultacie nie jest to obraz ani plik, który można zapisać, i trzeba to zrobić ręcznie dla każdego utworzonego drzewa. W przypadku bardziej skomplikowanego i / lub wsadowego budowania drzewa potrzebne będzie rzeczywiste graphviz w twoim systemie, więc możesz zadzwonić do dot program albo z terminalu, albo bezpośrednio z Pythona, jak opisał maxymoo.