печатать ID3 в некоторых глубинах в Python без использования пакетов - PullRequest
0 голосов
/ 02 ноября 2019

Я пишу код Python для алгоритма ID3 и использовал словарь для сохранения моей модели (дерева). Мой код:

def Generate_tree (original_data, data, stay_features):

index_class_label =data.columns[-1]   # target attribute name
if len(np.unique(data[index_class_label])) == 1:
    return np.unique(data[index_class_label])[0]

elif len(data)==0: # if data is empty return original data majority vote class
    return original_data[index_class_label].value_counts().idxmax()

elif len(remain_features) ==0:
    return data[index_class_label].value_counts().idxmax()

else:
    selected_att=split_point_selection(data,remain_features)
    tree = {selected_att: {}}
    remain_features = [i for i in remain_features if i != selected_att]

    uniq_vals_of_selected_att =np.unique(data[selected_att])

    for uniq in uniq_vals_of_selected_att:
        partition= data.where(data[selected_att] == uniq).dropna()

        subtree = Generate_tree(original_data,partition,remain_features)
        # Add the sub tree, grown from the sub_dataset to the tree under the root node
        tree[selected_att][uniq] = subtree

    return (tree)

Как можно распечатать это дерево на некоторой глубине вместо печати полного дерева? например 3?

...