代码之家  ›  专栏  ›  技术社区  ›  jss367

决策树中的样本和值似乎冲突

  •  2
  • jss367  · 技术社区  · 6 年前

    Decision tree

    在上面的图片中,最高级别的样本是6499,它被分成3356个真和3143个假。但是如果你遵循真实的路径,它说有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')
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Mihai Chelaru klin    6 年前

    我想你误解了 value 代表。值似乎表示 树节点上每个类的实例 在哪里 samples 只是 中所有实例的总和 价值 在那个节点 .

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