0
擴大在之前討論的節點:不是二進制區別 Changing colors for decision tree plot created using export graphviz彩色樹使用的graphviz class_names
我怎麼會色樹基地的節點上的統治階級(虹膜種), ?這應該需要將iris.target_names(描述該類的字符串)和iris.target(該類)組合在一起。
import pydotplus
from sklearn.datasets import load_iris
from sklearn import tree
import collections
clf = tree.DecisionTreeClassifier(random_state=42)
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
nodes = graph.get_node_list()
edges = graph.get_edge_list()
colors = ('brown', 'forestgreen')
edges = collections.defaultdict(list)
for edge in graph.get_edge_list():
edges[edge.get_source()].append(int(edge.get_destination()))
for edge in edges:
edges[edge].sort()
for i in range(2):
dest = graph.get_node(str(edges[edge][i]))[0]
dest.set_fillcolor(colors[i])
graph.write_png('tree.png')
我個人的問題有四類。你會如何概括這個n班? – MyopicVisage
我曾打算使用:colors =('lightblue','lightyellow','lightgreen','lightred'),然後在它們之間進行插值。 – MyopicVisage
@MyopicVisage:這是具有挑戰性的:)我個人更喜歡只有最後的節點着色,否則它會變成聖誕樹。我會多考慮一下。 –