问题设置:我有一个不平衡的数据集,其中98%的数据属于A类,2%属于B类。我训练了一个DecisionTreeClassifier(来自sklearn),class_weights设置为与以下设置平衡:
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的另一个示例:
我不知道如何解释价值表。条目类权重?这是否意味着分类器分别将这些权重应用于每个类以确定下一个节点中要使用的下一个阈值?
答案 0 :(得分:3)
该列表表示每个类中已到达该节点的记录数。根据您组织目标变量的方式,第一个值表示到达该节点的类型A的记录数,第二个值是到达该节点的类型B的记录数(反之亦然)。
当比例设置为True时,它现在是已到达该节点的每个类的记录的分数。
决策树的工作方式是尝试找到最能隔离类的决策。因此,它更喜欢导致类似[0, 100]
的决策导致[50, 50]