问题设置:我有一个不平衡的数据集,其中98%的数据属于A类,2%属于B类。我培训了一名决策者(来自sklearn),将类权重设置为使用以下设置进行平衡:
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中将property设置为true:
我不知道如何解释价值表参赛作品是班级重量吗?这是否意味着分类器将这些权重分别应用于每个类以确定在下一个节点中使用的下一个阈值?
最佳答案
列表表示每个类中已到达该节点的记录数根据目标变量的组织方式,第一个值将表示到达该节点的A类型记录数,第二个值将表示到达该节点的B类型记录数(反之亦然)。
当property设置为True时,它现在是到达该节点的每个类的记录的分数。
决策树的工作方式是试图找到能够最好地隔离类的决策。因此,它更倾向于做出类似于[0, 100]
的决定,而不是做出导致[50, 50]
的决定。