运行鸢尾花分类代码报cannot unpack non-iterable function object错误如何解决
错误含义
TypeError: cannot unpack non-iterable function object 意为你尝试对不可迭代的函数对象执行拆包操作:你在需要获取数据集返回值的位置,没有调用函数,直接把函数本身赋值给了需要拆包的变量,函数对象不属于可迭代的列表/元组类型,无法被拆解为training和testing两个变量。
修复方案
你代码中有两处需要修正:
- 修正数据集调用语句
你在simulate函数的循环内,已经正确通过training, testing = data()获取了拆分后的数据集,但后续多写了一行training, testing = data:这里的data没有加调用括号(),拿到的是函数对象而非执行后的返回值。如果这段重复逻辑是你误写,直接删除从这行开始到下一次append操作之间的4行重复代码即可;如果你确实需要重复测试同一份划分的结果,将data改为data()即可。 - 修正
simulate函数的调用方式
你定义的simulate函数没有设置入参,但调用时写了simulate(iris)多传入了参数,直接改为nb_acc_, tree_acc_, training_fracs_ = simulate()即可。
修正后可以正常运行得到两个分类器的准确率结果。
内容的提问来源于stack exchange,提问作者meloqq
相关产品推荐
相关产品推荐

