【问题标题】:DecisiontreeClassifier, why is the sum of values wrong?DecisiontreeClassifier,为什么值的总和是错误的?
【发布时间】:2021-06-23 03:20:09
【问题描述】:

我可视化了我的决策树分类器,我注意到样本总和错误或公式不同,“值”值与样本值不匹配(屏幕截图)?我是否误解了我的决策树?我想如果在我的节点中有 100 个样本并且 40 个是 True 而 60 个是 False,我会在我的下一个节点中得到 40 个(或 60 个)样本,这些样本再次被划分......

import matplotlib.pyplot as plt
from sklearn import tree
tree1=DecisionTreeClassifier(criterion="entropy",max_features=13,max_leaf_nodes=75,min_impurity_decrease=0.001,min_samples_leaf=12,min_samples_split=20,splitter="best",max_depth=9)

tree1.fit(X_train,y_train)
feature_names=Daten.drop("Abwanderung_LabelEncode",axis=1).columns
class_names=["Keine Abwanderung","Abwanderung"]
fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(tree1, 
               feature_names=feature_names,
               class_names=class_names,
               rounded=True,
               filled=True)

【问题讨论】:

    标签: python matplotlib scikit-learn decision-tree


    【解决方案1】:

    情节是正确的。

    value中的两个值不是去子节点的样本数;相反,它们是节点中的负类和正类计数。例如,748=101+647;该节点中有 748 个样本,其中 647 个是正类。子节点有685和63个样本,685+63=647。左孩子有47个负样本,右节点有54个,47+54=101,负样本总数。

    【讨论】:

      【解决方案2】:

      value 字段不代表拆分的大小,而是代表每个类有多少数据点。例如,顶部节点 voicemail_tarif_labelencode <= 0.5 的拆分有 748 个样本,101 个属于索引 0 的类,647 个属于索引 1 的类。它确实显示数据点的数量 0.5。如果您现在查看接下来的两个节点,这些样本大小的总和 (685 + 63) = 748,即父节点中的样本数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-04
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 2018-05-29
        相关资源
        最近更新 更多