Я пишу код 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?