【问题标题】:Samples and value appear to conflict in decision tree决策树中的样本和值似乎冲突
【发布时间】:2018-11-30 05:41:36
【问题描述】:

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

我想我只是误解了 samples 和 value 的含义,但如果是代码,这里是图形部分的代码:

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')

【问题讨论】:

标签: python scikit-learn decision-tree


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-05-05
    • 2016-07-12
    • 2016-08-10
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2017-09-28
    相关资源
    最近更新 更多