使用decision-tree-learner时预测误差率恒为0的问题求助
决策树预测误差率始终返回0的问题排查求助
背景与问题描述
我正在基于决策树学习算法构建模型,在数据集上开展测试,同时想要计算模型的预测误差率,用来绘制训练集与测试集的学习曲线。我设置了循环让算法执行n次(n为自定义值),用internal_nodes变量存储每次生成的内部节点数作为学习曲线的横坐标,每次调用都会返回这个值。
我编写了count_errors()函数来统计预测值与真实值的差异,但无论怎么测试,计算得到的误差始终是0。我单独测试了单次迭代的情况,算法运行流程看起来是正常的,所以推测问题出在误差计算的逻辑里,恳请大家帮忙排查问题。
相关代码片段
误差统计函数
def count_errors(examples, target, tree): counter = 0 for ex in examples: # examples是包含示例列表的列表 desired = ex[target] predicted = tree(ex) # 使用__call__(self,example)获取叶节点值 if desired != predicted: counter += 1 return float(counter / len(examples)) * float(100)
决策树的__call__方法
def __call__(self, example): """根据属性和分支对示例进行分类。""" attrvalue = example[self.attr] # attr是用于索引示例的整数列表 return self.branches[attrvalue](example)
我的初步排查
- 单次迭代时,算法生成决策树的流程无明显报错,看起来正常运行
- 确认输入的
examples数据格式符合预期(是包含示例的列表的列表) - 暂时未发现
target参数的索引存在问题
内容的提问来源于stack exchange,提问作者Hashet
相关产品推荐
相关产品推荐

