Python 样本和值在决策树中出现冲突

Python 样本和值在决策树中出现冲突,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,在上图中,最高级别的样本是6499,分为3356个True和3143个False。但如果你遵循真实路径,它说有2644个样本。为什么没有3356呢?所有样本似乎与上述水平的结果相冲突 我想我只是误解了示例和值的含义,但如果是代码,下面是图形部分的代码: dot_data = tree.export_graphviz(clf, feature_names=columns[1:],

在上图中,最高级别的样本是6499,分为3356个True和3143个False。但如果你遵循真实路径,它说有2644个样本。为什么没有3356呢?所有样本似乎与上述水平的结果相冲突

我想我只是误解了示例和值的含义,但如果是代码,下面是图形部分的代码:

dot_data = tree.export_graphviz(clf,
                                feature_names=columns[1:],
                                out_file=None,
                                filled=True,
                                rounded=True)
graph = pydotplus.graph_from_dot_data(dot_data)

colors = ('green', 'red')
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')

我认为你误解了
所代表的含义。Value似乎表示树的该节点上每个类的实例数,其中
samples
只是该节点上
Value
中所有实例的总和


字段不会告诉您如何根据条件的结果分割这些样本。您会注意到,在每个节点上,
samples
相当于
sum(value)
,同样,每个父节点的
samples
值相当于每个子节点的
samples
值之和(例如,
6499==2644+3855
)。

在接受的答案之上,您可能会发现这个答案也很有用: