sklearn decisiontree plot_tree中节点中的"value"是什么意思

What is the meaning of "value" in a node in sklearn decisiontree plot_tree

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

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

他们告诉你你在这一步中class的样本数量。

例如,您的图片显示,在拆分“hops<=5”之前,您有 2417 个 class 0 样本和 1059 个 class 1 样本。

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

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

DecisionTreeClassifier:

value in a DecisionTreeClassifier 是每个节点的 samples.[=22= 中的 class split ]

请记住,如果您在 fit().

的通话中对您的 class 进行加权,它也可能会被加权

例如:

cw={0: 0.6495288248337029, 1: 2.1719184430027805}

取真节点,你的真class分裂计算为:

>>> [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:

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

例如:

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

深度 1 回归树安装在 coherence 上以预测 firing_rate。这不是一个非常有用的树,但它说明了这个想法。

取真节点,计算为:

>>> 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