【问题标题】:How can i get which leaves contains which training samples in DecisionTreeClassifier tree in sklearn如何在 sklearn 的 DecisionTreeClassifier 树中获取哪些叶子包含哪些训练样本
【发布时间】:2019-10-03 00:57:11
【问题描述】:

使用 sklearn DecisionTreeClassifier 时会生成叶子,每个叶子都包含样本。目前可视化这棵树显示带有叶子的树,每个类的样本数。我想确切地知道哪些样品属于哪个叶子? A tree representation

我想得到落在每一片叶子上的样本,代码或想法会很有帮助

【问题讨论】:

  • 显示你的代码,你尝试了什么,你得到了什么,有没有错误。

标签: scikit-learn


【解决方案1】:

正如 scikit learn 的文档所解释的那样,您可以使用方法 DecisionTreeClassifier.apply(self, X, check_input=True),它为 X 中的每个样本返回它“感觉到”到的叶子的 ID:

https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.apply

否则,您可以使用方法DecisionTreeClassifier.decision_path(self, X, check_input=True) 获取“节点指示矩阵,其中非零元素表示样本通过节点”。

https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.decision_path

因此,以下代码可能会解决您的问题:

dec_tree = DecisionTreeClassifier()
dec_tree.fit(x_train, y_train)

node_id_list = dec_tree.apply(x_train)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2021-08-28
    • 1970-01-01
    • 2011-07-08
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多