Преобразовать дерево решений в таблицу - PullRequest
0 голосов
/ 20 ноября 2018

Я ищу способ преобразовать дерево решений, обученное с помощью scikit sklearn, в таблицу решений.

Я хотел бы знать, как проанализировать структуру дерева решений, чтобы найти решения, принимаемые на каждом этапе.
Тогда я хотел бы получить идеи о том, как структурировать эту таблицу.
Вы знаете способ или у вас есть идея сделать это?

1 Ответ

0 голосов
/ 20 ноября 2018

Вот пример кода для преобразования дерева решений в код «python».Вы можете легко приспособить это, чтобы сделать стол.

Все, что вам нужно сделать, - это создать глобальную переменную, которая представляет собой таблицу, размер которой равен числу листьев, умноженному на число объектов (или категорий объектов), и заполнить его рекурсивно

def tree_to_code(tree, feature_names, classes_names):
    tree_ = tree.tree_
    feature_name = [
        feature_names[i] if i != _tree.TREE_UNDEFINED else "undefined!"
        for i in tree_.feature
    ]

    print( "def tree(" + ", ".join(feature_names) + "):" )

    def recurse(node, depth):
        indent = "  " * depth
        if tree_.feature[node] != _tree.TREE_UNDEFINED:
            name = feature_name[node]
            threshold = tree_.threshold[node]

            print( indent + "if " + name + " <= " +  str(threshold)+ ":" )
            recurse(tree_.children_left[node], depth + 1)
            print( indent + "else:  # if " + name + "<=" +  str(threshold) )
            recurse(tree_.children_right[node], depth + 1)
        else:
            impurity = tree.tree_.impurity[node]
            dico, label = cast_value_to_dico( tree_.value[node], classes_names )

            print( indent + "# impurity=" + str(impurity) + " count_max=" + str(dico[label]) )
            print( indent + "return " + str(label) )

    recurse(0, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...