繁体   English   中英

scikit-learn DecisionTreeClassifier.tree_.value 有什么作用?

[英]What does scikit-learn DecisionTreeClassifier.tree_.value do?

我正在研究 DecisionTreeClassifier 模型,我想了解模型选择的路径。 所以我需要知道什么值赋予

DecisionTreeClassifier.tree_.value

好吧,您是对的,因为文档实际上对此很模糊(但说实话,我也不确定它的用处)。

让我们使用 iris 数据复制文档中的示例:

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)

要求clf.tree_.value ,我们得到:

array([[[ 50.,  50.,  50.]],
       [[ 50.,   0.,   0.]],
       [[  0.,  50.,  50.]],
       [[  0.,  49.,   5.]],
       [[  0.,  47.,   1.]],
       [[  0.,  47.,   0.]],
       [[  0.,   0.,   1.]],
       [[  0.,   2.,   4.]],
       [[  0.,   0.,   3.]],
       [[  0.,   2.,   1.]],
       [[  0.,   2.,   0.]],
       [[  0.,   0.,   1.]],
       [[  0.,   1.,  45.]],
       [[  0.,   1.,   2.]],
       [[  0.,   1.,   0.]],
       [[  0.,   0.,   2.]],
       [[  0.,   0.,  43.]]])

len(clf.tree_.value)
# 17

要了解这个数组究竟代表什么,查看树可视化很有用(也可在文档中找到,为方便起见,在此处复制):

在此处输入图片说明

我们可以看到,这棵树有 17 个节点; 仔细观察,我们看到每个节点的value实际上是我们clf.tree_.value数组的一个元素。

所以,长话短说:

  • clf.tree_.value是一个数组数组,长度等于树中的节点数
  • 它的每个元素数组(对应于一个树节点)的长度等于类的数量(这里是 3)
  • 这些 3 元素数组中的每一个都对应于最终在每个类的相应节点中的训练样本数量。

为了通过示例阐明最后一点,请考虑数组的第二个元素[[ 50., 0., 0.]] (对应于橙色节点):它表示,在此节点中,结束从第 0 类中抽取 50 个样本,从其他两个类(#1 和 #2)中抽取 0 个样本。

希望这有助于...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM