2017-06-29 4 views
1

Ich habe einen Entscheidungsbaum Klassifikator von sklearn und ich benutze pydotplus, um es zu zeigen. Allerdings mag ich nicht wirklich, wenn es viele Informationen zu jedem Knoten für meine Präsentation gibt (Entropie, Stichproben und Wert).Python - Graphviz - Entfernen Sie die Legende auf Knoten von DecisionTreeClassifier

enter image description here

Um es einfacher, den Menschen vermitteln ich nur möchte auf sie die Entscheidung und die Klasse halten. Wo kann ich den Code ändern, um es zu tun?

Vielen Dank.

Antwort

1

Gemäß der documentation ist es nicht möglich, auf das Setzen der zusätzlichen Informationen in den Boxen zu verzichten. Das einzige, was Sie implizit weglassen können, ist der impurity Parameter.

Allerdings habe ich es den anderen expliziten Weg gemacht, der etwas krumm ist. Zuerst speichere ich die .dot Datei, die die Verunreinigung auf setzt Falsch. Dann öffne ich es und wandle es in ein String-Format um. Ich verwende Regex, um die redundanten Labels zu subtrahieren und erneut zu speichern.

Der Code lautet:

import pydotplus # pydot library: install it via pip install pydot 
from sklearn.tree import DecisionTreeClassifier 
from sklearn.tree import export_graphviz 
from sklearn.datasets import load_iris 

data = load_iris() 
clf = DecisionTreeClassifier() 
clf.fit(data.data, data.target) 

export_graphviz(clf, out_file='tree.dot', impurity=False, class_names=True) 

PATH = '/path/to/dotfile/tree.dot' 
f = pydot.graph_from_dot_file(PATH).to_string() 
f = re.sub('(\\\\nsamples = [0-9]+)(\\\\nvalue = \[[0-9]+, [0-9]+, [0-9]+\])', '', f) 
f = re.sub('(samples = [0-9]+)(\\\\nvalue = \[[0-9]+, [0-9]+, [0-9]+\])\\\\n', '', f) 

with open('tree_modified.dot', 'w') as file: 
    file.write(f) 

Hier sind die Bilder vor und nach der Änderung:

enter image description hereenter image description here

In Ihrem Fall scheint es in Kisten mehr Parameter zu sein, so Vielleicht möchten Sie den Code ein wenig optimieren.

Ich hoffe, dass hilft!

+1

Vielen Dank für Ihre Hilfe! Du rettest mich :) – DionysoSong

Verwandte Themen