पहला प्रश्न: हां, आपका तर्क सही है। बायां नोड सही है और दायां नोड झूठा है। यह प्रतिद्वंद्वी है; सच्चाई का मतलब आम तौर पर एक छोटा सा मूल्य होगा।
दूसरा प्रश्न: इस समस्या को पेडोटप्लस के साथ एक ग्राफ के रूप में पेड़ को देखकर सबसे अच्छा हल किया जाता है। tree.export_graphviz() की 'class_names' विशेषता प्रत्येक नोड के बहुमत वर्ग में एक कक्षा घोषणा जोड़ देगा। आईपीथन में कोड निष्पादित किया गया है।
from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf2 = tree.DecisionTreeClassifier()
clf2 = clf2.fit(iris.data, iris.target)
with open("iris.dot", 'w') as f:
f = tree.export_graphviz(clf, out_file=f)
import os
os.unlink('iris.dot')
import pydotplus
dot_data = tree.export_graphviz(clf2, out_file=None)
graph2 = pydotplus.graph_from_dot_data(dot_data)
graph2.write_pdf("iris.pdf")
from IPython.display import Image
dot_data = tree.export_graphviz(clf2, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True, # leaves_parallel=True,
special_characters=True)
graph2 = pydotplus.graph_from_dot_data(dot_data)
## Color of nodes
nodes = graph2.get_node_list()
for node in nodes:
if node.get_label():
values = [int(ii) for ii in node.get_label().split('value = [')[1].split(']')[0].split(',')];
color = {0: [255,255,224], 1: [255,224,255], 2: [224,255,255],}
values = color[values.index(max(values))]; # print(values)
color = '#{:02x}{:02x}{:02x}'.format(values[0], values[1], values[2]); # print(color)
node.set_fillcolor(color)
#
Image(graph2.create_png())
पत्ती में वर्ग का निर्धारण करने, अपने उदाहरण एक भी वर्ग के साथ पत्ते नहीं है का सवाल है, आईरिस डेटा सेट करता है। यह आम है और इस तरह के परिणाम प्राप्त करने के लिए मॉडल को अधिक उपयुक्त बनाने की आवश्यकता हो सकती है। कक्षाओं का एक अलग वितरण कई क्रॉस-मान्य मॉडलों के लिए सबसे अच्छा परिणाम है।
कोड का आनंद लें!
जिज्ञासा से, आपने निर्णय पेड़ को कैसे प्लॉट किया? – Matt
सबसे पहले जेएसओएन प्रारूप में पेड़ निर्यात करें (यह [लिंक] देखें (http://www.garysieling.com/blog/rending-scikit-decision-trees-d3-js)) और फिर d3.js का उपयोग करके पेड़ को प्लॉट करें । या आप सीधे एम्बेडेड फ़ंक्शन का उपयोग कर सकते हैं: 'tree.export_graphviz (clf, out_file = your_out_file, feature_names = your_feature_names) 'आशा है कि यह काम करता है, @Matt –