【问题标题】:What does scikit-learn DecisionTreeClassifier.tree_.value do?scikit-learn DecisionTreeClassifier.tree_.value 有什么作用?
【发布时间】:2018-05-22 23:21:53
【问题描述】:

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

DecisionTreeClassifier.tree_.value

【问题讨论】:

    标签: python machine-learning scikit-learn decision-tree


    【解决方案1】:

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

    让我们用虹膜数据复制documentation 中的示例:

    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.]](对应于橙色节点):它说,在这个节点中,最终有来自类的 50 个样本#0,其他两个类(#1 和 #2)的样本为零。

    希望这会有所帮助...

    【讨论】:

    • 这就是我要找的,谢谢!
    猜你喜欢
    • 2014-11-30
    • 2018-01-24
    • 2017-01-21
    • 2016-11-22
    • 2014-11-12
    • 2017-02-25
    • 2021-05-25
    • 2015-05-22
    • 2016-08-01
    相关资源
    最近更新 更多