sklearn决策树plot_tree中节点中的“值”是啥意思

Posted

技术标签:

【中文标题】sklearn决策树plot_tree中节点中的“值”是啥意思【英文标题】:What is the meaning of "value" in a node in sklearn decisiontree plot_treesklearn决策树plot_tree中节点中的“值”是什么意思 【发布时间】:2021-04-19 09:44:03 【问题描述】:

我使用plot_tree function 绘制了我的 sklearn 决策树。节点结构如下:

但我不明白value = [2417, 1059] 是什么意思。在其他节点中还有其他值。谢谢你的解释。

【问题讨论】:

【参考方案1】:

它们向您指示您在该步骤中按类别划分的样本数量

例如,您的图片显示,在拆分为“hops

意识到如果将这两个值相加,您将获得与参数“samples”相同的数字(3476)。

如果树有效,您将观察到数据如何在每一步中更好地拆分。对于最后的叶子,您将看到您有明确的值,例如[300, 2]。那么您可以说所有这些样本都是 0 类。

【讨论】:

知道DecisionTreeRegressor 中的含义,尤其是。对于内部节点? 原来它可能取决于使用的标准。对于 MAE,它是 median【参考方案2】:

DecisionTreeClassifier:

DecisionTreeClassifier 中的

value 是每个节点的 samples 中的类拆分。

请记住,如果您在调用 fit() 时对您的课程进行加权,它也可能会被加权。

例如:

cw=0: 0.6495288248337029, 1: 2.1719184430027805

取真节点,你的真类分裂计算如下:

>>> [3819.229 / cw[0], 1216.274 / cw[1]]
[5880, 560]

如果不清楚,您的标准是根据加权拆分计算的:

>>> a, b = 3819.229, 1216.274
>>> ab = a + b
>>> (-(a / ab)*math.log2(a / ab)) - ((b / ab)*math.log2(b / ab))
0.7975914228753467

DecisionTreeRegressor:

DecisionTreeRegressor 中的

value 是树为落入该节点的新示例预测的值。如果您的标准是 MSE,您会发现 value 是该节点中 samples 的平均度量。

例如:

*(数据:Seaborn 的“点”示例集。)

coherence 上拟合的深度 1 回归树来预测 firing_rate。这不是一棵非常有用的树,但它说明了这个想法。

取真节点,value计算为:

>>> value = data[data.coherence <= 19.2].firing_rate.mean()
>>> value
40.48326118418657
该节点的

squared_error 是:

>>> ((data[data.coherence <= 19.2].firing_rate - value)**2).mean()
134.6504380931471

【讨论】:

以上是关于sklearn决策树plot_tree中节点中的“值”是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

从 sklearn 随机森林回归器可视化决策树

增加决策树中节点的大小

python中的sklearn中决策树使用的是哪一种算法

机器学习之手写决策树以及sklearn中的决策树及其可视化

决策树分类器 sklearn 中节点的不同颜色表示啥?

sklearn库学习----决策树(分类树DecisionTreeClassifier)