python - 决策树算法实现
问题描述
对于此代码来实现决策树算法,我收到以下错误:
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
解决方案
推荐阅读
- html - 如何使我的水平列表在页脚的中心居中
- kubernetes - 在 Kubernetes 中运行时,talend ETL 作业如何恢复
- ios - 无法从可选中获取“某些”字段
- javascript - Javascript 嵌套数组平均价格
- flutter - 使用 GetX 和 Firebase Auth 进行 Firebase Firestore 查询
- javascript - 如何在 React 钩子中附加到状态数组?
- git - 从 PR 分支出不同的分支
- pdftk - 使用 PDFtk pro 将多个 pdf 文件合并为一个文件名
- api - laravel-json-api 适配器没有调用
- tsql - TSQL如何在没有实际UNION命令的情况下产生UNION结果