我有一个决策树来对蘑菇数据集中的数据进行分类。标签是可食用的或有毒的。我正在使用熵来计算每个属性的信息增益。当我设置深度限制时,树似乎可以适当地分类,但是,如果我让它运行直到没有更多属性,树将永远运行。对此不熟悉,我不确定这是哪里出了问题,这是下面的代码:
def ID3NoDepth(data, attrs, label):
#create the node with name and data
node = Node(label, data)
if Entropy(data.raw_data) == 0:
label = getMajLabels(data.raw_data)
node.result = label
return node
elif len(attrs) == 0:
label = getMajLabels(data.raw_data)
node.result = label
return node
else:
root = findTopIg(data, attrs)
val_root = data.attributes[root].possible_vals
val_root_index = attrs.index(root)
node.index = val_root_index
node.branchName = root
node.labels = val_root
newAttrsList = attrs.copy()
newAttrsList.remove(root)
for b in val_root:
subset = data_obj.get_row_subset(root, b)
node.childz.append(ID3NoDepth(subset, newAttrsList, b))
return node
任何朝着正确方向的帮助都将受到赞赏!