Извлеките фрейм данных в csv из рекурсивной функции для правил дерева решений - PullRequest
0 голосов
/ 05 августа 2020

Попытка извлечь фрейм данных, созданный в приведенном ниже коде, в формат csv. Однако он выводит только 1-ю строку, а остальные строки не извлекаются. Причина в том, что рекурсия l oop просто выводит первую строку в csv и игнорирует другие. Лучший способ оптимизировать это для вывода всех строк (правил) в csv?

def tree_to_code(tree, feature_names):
tree_ = tree.tree_
value = tree.tree_.value
samples = tree.tree_.n_node_samples
mse = tree.tree_.impurity

feature_name = [
    feature_names[i] if i != _tree.TREE_UNDEFINED else "undefined!"
    for i in tree_.feature
]
pathto=dict()

global k
k = 0
def recurse(node, depth, parent):
    global k
    listobj = []
    samples = tree_.n_node_samples[node]
    mse = tree_.impurity[node]
    value =  tree_.value[node]
    indent = "  " * depth

    if tree_.feature[node] != _tree.TREE_UNDEFINED:
        name = feature_name[node]
        threshold = tree_.threshold[node]
        s= "{} <= {} ".format( name, threshold )
        if node == 0:
            pathto[node]=s
        else:
            pathto[node]=pathto[parent]+' & ' +s
        recurse(tree_.children_left[node], depth + 1, node)
        s="{} > {} ".format( name, threshold)
        if node == 0:
            pathto[node]=s
        else:
            pathto[node]=pathto[parent]+' & ' +s
        recurse(tree_.children_right[node], depth + 1, node)
    else:
        k=k+1
        dict_obj = {'Node': node, 'Features': pathto[parent], 'Samples': samples, 'mse': mse, 'value':value}
        listobj.extend([dict_obj])
        df = pd.DataFrame(listobj,columns=['Node', 'Features', 'Samples', 'mse', 'value'])
        print(df.head())
        
recurse(0, 1, 0)

tree_to_code (имя модели, список функций)

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