为啥叶子中的样本数与 DecisionTreeClassifier 的父节点中的值数不匹配?
Posted
技术标签:
【中文标题】为啥叶子中的样本数与 DecisionTreeClassifier 的父节点中的值数不匹配?【英文标题】:Why the number of samples in a leaf doesn't match the number of values in parent node for DecisionTreeClassifier?为什么叶子中的样本数与 DecisionTreeClassifier 的父节点中的值数不匹配? 【发布时间】:2021-08-17 14:27:05 【问题描述】:我有一个 python 脚本,它为数据集创建一个DecisionTreeClassifier
,然后绘制这棵树的图。问题是叶子中的样本数量总是与父节点中的拆分不同。例如根节点的 value=[4267, 6669],但它的右侧节点只有 828 个样本。
这是我的代码:
# Create Decision Tree classifier object
clf = DecisionTreeClassifier(max_depth=8, min_samples_split=0.03, min_samples_leaf=0.01)
# Train Decision Tree Classifier
clf = clf.fit(X_train_ohe, y_train)
# Predict the response for test dataset
X_test_ohe = ohe.transform(X_test)
y_pred = clf.predict(X_test_ohe)
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
plt.figure(figsize=(48, 24))
plot_tree(clf,
feature_names=ohe_df.columns,
class_names=np.unique(y).astype('str'),
filled=True,
fontsize=10)
为什么会这样?
【问题讨论】:
【参考方案1】:就样本数量而言(请参阅图表中的 samples
),具有 10,936 个样本的根节点被拆分为具有 10,108 和 828 个样本的节点,因此它加起来为 (10,108 + 828 = 10,936)。
如果您查看value
(显示每个节点中每个类的样本数),您可以看到:
Bad
):根节点中的 4,267 是左孩子中 3,439 和右孩子中 828 的总和
对于第二类 (Good
):6,669 是 6,669(左)和 0(右)的总和
【讨论】:
以上是关于为啥叶子中的样本数与 DecisionTreeClassifier 的父节点中的值数不匹配?的主要内容,如果未能解决你的问题,请参考以下文章
为啥将 Magento2 样本数据中的 Luma Thema 样本图像扩展到自定义主题时不可见?