私はsklearnの決定木の分類子を持っています。私はそれを表示するためにpydotplusを使います。 私のプレゼンテーション(エントロピー、サンプル、値)のために各ノードに多くの情報がある場合、私は本当に好きではありません。Python - Graphviz - DecisionTreeClassifierのノード上の凡例を削除します。
私はそれだけで決定し、クラスを維持したい人には簡単にそれを説明します。 どこでコードを修正すればいいですか?
ありがとうございます。
私はsklearnの決定木の分類子を持っています。私はそれを表示するためにpydotplusを使います。 私のプレゼンテーション(エントロピー、サンプル、値)のために各ノードに多くの情報がある場合、私は本当に好きではありません。Python - Graphviz - DecisionTreeClassifierのノード上の凡例を削除します。
私はそれだけで決定し、クラスを維持したい人には簡単にそれを説明します。 どこでコードを修正すればいいですか?
ありがとうございます。
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)
は変更前と後の画像です:あなたのケースでは
、ボックス内のより多くのパラメータがあるように思われるので、コードをちょっと微調整したいかもしれません。
私はそれが助けてくれることを願っています!
ありがとうございました!あなたは私を助けてくれる :) – DionysoSong