问题设置:我有一个不 balancer 的数据集,其中98%的数据属于A类,2%属于B类 . 我训练了一个DecisionTreeClassifier(来自sklearn),class_weights设置为与以下设置 balancer :
dtc_settings = {
'criterion': 'entropy',
'min_samples_split': 100,
'min_samples_leaf': 100,
'max_features': 'auto',
'max_depth': 5,
'class_weight': 'balanced'
}
我没有理由将标准设置为熵(而不是基尼) . 我只是玩弄设置 .
我使用tree的export_graphviz来获取下面的决策树图 . 这是我使用的代码:
dot_data = tree.export_graphviz(dtc, out_file=None, feature_names=feature_col, proportion=False)
graph = pydot.graph_from_dot_data(dot_data)
graph.write_pdf("test.pdf")
我对下图中的值列表输出感到困惑:
值列表变量是否意味着两个类具有相同的权重?如果是这样,如何为树中的后续节点计算值列表?
这是我在export_graphviz中将比例设置为True的另一个示例:
我不知道如何解释 Value 表 . 条目类权重?这是否意味着分类器分别将这些权重应用于每个类以确定下一个节点中要使用的下一个阈值?
1 回答
该列表表示每个类中已到达该节点的记录数 . 根据您组织目标变量的方式,第一个值表示到达该节点的类型A的记录数,第二个值表示到达该节点的类型B的记录数(反之亦然) .
当proportion设置为True时,它现在是已到达该节点的每个类的记录的一部分 .
决策树的工作方式是它试图找到最能隔离类的决策 . 所以它更喜欢那些会导致像
[0, 100]
这样的事情导致[50, 50]
的决定