打螺丝否 2022-01-25 15:38 采纳率: 0%
浏览 1348
已结题

TypeError: iteration over a 0-d array

问题遇到的现象和发生背景

绘制决策树时类型出错

问题相关代码,请勿粘贴截图

def createTree(data, labels, names, method = 'id3'):
data = np.asarray(data)
labels = np.asarray(labels)
names = np.asarray(names)
# 如果结果为单一结果
if len(set(labels)) == 1:
return labels[0]
# 如果没有待分类特征
elif data.size == 0:
return voteLabel(labels)
# 其他情况则选取特征
bestFeat, bestEnt = bestFeature(data, labels, method = method)
# 取特征名称
bestFeatName = names[bestFeat-1]
# 从特征名称列表删除已取得特征名称
names = np.delete(names, [bestFeat])
# 根据选取的特征名称创建树节点
decisionTree = {bestFeatName: {}}
# 根据最优特征进行分割
dataSet, labelSet = splitFeatureData(data, labels, bestFeat)
# 对最优特征的每个特征值所分的数据子集进行计算
for featValue in dataSet.keys():
decisionTree[bestFeatName][featValue] = createTree(dataSet.get(featValue-1), labelSet.get(featValue-1), names, method)
return decisionTree

运行结果及报错内容

TypeError Traceback (most recent call last)
in
----> 1 xgTreeTrain = createTree(x_train, y_train, class_names, method = 'id3')
2 # 画剪枝前的树
3 print("剪枝前的树")
4 createPlot(xgTreeTrain)

in createTree(data, labels, names, method)
22 # 对最优特征的每个特征值所分的数据子集进行计算
23 for featValue in dataSet.keys():
---> 24 decisionTree[bestFeatName][featValue] = createTree(dataSet.get(featValue-1), labelSet.get(featValue-1), names, method)
25 return decisionTree
26

in createTree(data, labels, names, method)
5 names = np.asarray(names)
6 # 如果结果为单一结果
----> 7 if len(set(labels)) == 1:
8 return labels.iloc[0]
9 # 如果没有待分类特征

TypeError: iteration over a 0-d array

我的解答思路和尝试过的方法

将其改为:

如果结果为单一结果

if len(set(labels)) == 1: 
    return labels.iloc[0] 
我想要达到的结果

不出错,画出决策树

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2022-01-27 10:19
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 创建了问题 1月25日

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊