首页 > 解决方案 > 决策树算法实现

问题描述

对于此代码来实现决策树算法,我收到以下错误:

IndexError:数组的索引过多。

我实际上想将 2-D Numpy 数组的一个分区分配给另一个 2-D Numpy 数组,但该函数append默认情况下会展平数组。由于我对python相当陌生,这可能是一个愚蠢的疑问。

def gen_decision_tree(data, attribute_list):
    y = data[:,8]
    root = Node(None)
    if(y.all()):
        root.data = y[0]
        return root
    else:
        splitting_attribute = information_gain(data, attribute_list)
        root.data = splitting_attribute
        attribute_list.remove(splitting_attribute)

        data_left = np.array([]).astype(int)
        data_right = np.array([]).astype(int)

        for i in range(0, (len(y) - 1)):
            if(data[i, splitting_attribute] == 0):
                data_left = np.append(data_left, data[i, :])
            else:
                data_right = np.append(data_right, data[i, :])
        #print(data_left)
        #print(data_right)

        root.left = gen_decision_tree(data_left, attribute_list)
        root.right = gen_decision_tree(data_right, attribute_list)
        return root

IndexError                               
----> 1 gen_decision_tree(data, attribute_list)


---> 23 root.left = gen_decision_tree(data_left, attribute_list)


<ipython-input-86-10fd7c8ef9e5> in gen_decision_tree(data, attribute_list)
1 def gen_decision_tree(data, attribute_list):

----> 2     y = data[:,8]

3     root = Node(None)

4     if(y.all()):

5         root.data = y[0]

IndexError: too many indices for array

标签: pythonmachine-learningdecision-tree

解决方案


推荐阅读