Метод обхода DecisionTreeClassifier в sklearn - PullRequest
0 голосов
/ 07 февраля 2020

Этот класс используется для построения дерева решений. Множество значений в структуре деревьев, включая tree_.value и tree_.impurity, сохраняются в виде массивов без особого указания, к какому узлу относится каждое значение. Мои выводы говорят мне, что они выполняют предварительный обход, но у меня нет убедительных доказательств того, что именно так строится каждый массив. Кто-нибудь знает, где найти эту информацию?

1 Ответ

1 голос
/ 07 февраля 2020

С tree.pyx :

    def class Tree:
    """Array-based representation of a binary decision tree.
    The binary tree is represented as a number of parallel arrays. The i-th
    element of each array holds information about the node `i`. Node 0 is the
    tree's root. You can find a detailed description of all arrays in
    `_tree.pxd`. NOTE: Some of the arrays only apply to either leaves or split
    nodes, resp. In this case the values of nodes of the other type are
    arbitrary!

Таким образом, узел [0] ссылается на root. Чтобы добавить узел, он использует класс разделителя на листьях, который может либо разделить узлы на основе листа, который имеет большее улучшение примесей, либо расщепление по глубине. Я не изучал порядок добавления узлов в параллель, но я предполагаю, что они добавляются в том порядке, в котором они были созданы, что было бы «похоже» на трансверсал предварительного порядка, если бы дерево было упорядочено по примесям улучшение.

...