2017-06-29 6 views
1

私はsklearnの決定木の分類子を持っています。私はそれを表示するためにpydotplusを使います。 私のプレゼンテーション(エントロピー、サンプル、値)のために各ノードに多くの情報がある場合、私は本当に好きではありません。Python - Graphviz - DecisionTreeClassifierのノード上の凡例を削除します。

enter image description here

私はそれだけで決定し、クラスを維持したい人には簡単にそれを説明します。 どこでコードを修正すればい​​いですか?

ありがとうございます。

答えて

1

documentationによれば、ボックス内に追加情報を設定することを控えることはできません。暗黙的に省略することができるのは、impurityパラメータだけです。

しかし、私は幾分曲がっている他の明示的なやり方をしています。まず、.dotファイルに不純物を設定して虚偽に保存します。その後、私はそれを開き、文字列形式に変換します。正規表現を使用して冗長ラベルを減算し、再保存します。

コードはこのように書きます:ここで

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) 

は変更前と後の画像です:あなたのケースでは

enter image description hereenter image description here

、ボックス内のより多くのパラメータがあるように思われるので、コードをちょっと微調整したいかもしれません。

私はそれが助けてくれることを願っています!

+1

ありがとうございました!あなたは私を助けてくれる :) – DionysoSong

関連する問題