ID3决策树永远运行

时间:2018-09-08 21:58:58

标签: python recursion decision-tree

我有一个决策树来对蘑菇数据集中的数据进行分类。标签是可食用的或有毒的。我正在使用熵来计算每个属性的信息增益。当我设置深度限制时,树似乎可以适当地分类,但是,如果我让它运行直到没有更多属性,树将永远运行。对此不熟悉,我不确定这是哪里出了问题,这是下面的代码:

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

任何朝着正确方向的帮助都将受到赞赏!

0 个答案:

没有答案