You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何J48与PART分类器将乌龟误分为昆虫?(基于zoo.arff数据集)

Weka J48与PART分类器对zoo.arff中乌龟的误分问题

我用Weka的J48和PART分类器处理zoo.arff数据集,按剪枝决策树和PART决策列表的逻辑,乌龟应该被分类为爬行动物,但两款分类器都把它误判成了昆虫。已经确认zoo.arff里乌龟的属性是正确的,之前怀疑backbone属性有误但已经排除,请问问题出在哪?

J48剪枝树

feathers = false
|   milk = false
|   |   backbone = false
|   |   |   airborne = false
|   |   |   |   predator = false
|   |   |   |   |   legs <= 2: invertebrate (2.0)
|   |   |   |   |   legs > 2: insect (2.0)
|   |   |   |   predator = true: invertebrate (8.0)
|   |   |   airborne = true: insect (6.0)
|   |   backbone = true
|   |   |   fins = false
|   |   |   |   tail = false: amphibian (3.0)
|   |   |   |   tail = true: reptile (6.0/1.0)
|   |   |   fins = true: fish (13.0)
|   milk = true: mammal (41.0)
feathers = true: bird (20.0)

PART决策列表

feathers = false AND
milk = true: mammal (41.0)

feathers = true: bird (20.0)

backbone = false AND
airborne = false AND
predator = true: invertebrate (8.0)

backbone = false AND
legs > 2: insect (8.0)

fins = true: fish (13.0)

backbone = true AND
tail = true: reptile (6.0/1.0)

aquatic = true: amphibian (3.0)

: invertebrate (2.0)

Number of Rules  :  8

问题排查方向

  • 分类器分支/规则匹配优先级
    PART的规则是按顺序匹配的,backbone = false AND legs > 2: insect这条规则排在爬行动物规则之前。如果分类器判定乌龟的backbone为false,会优先触发昆虫规则;J48的树结构里,backbone = false分支下legs>2时直接判为昆虫,说明乌龟的样本走到了这个错误分支。
  • 属性编码与类型一致性
    即使你手动确认backbone属性正确,仍需检查arff文件中该属性的定义(比如@attribute backbone {true,false})和乌龟样本的对应值是否完全匹配——有没有大小写错误(如"True")、非布尔值编码(如用1/0代替true/false),Weka对属性类型匹配要求严格,不匹配会导致解析错误。
  • 其他属性值的影响
    检查乌龟的legs属性值是否大于2,若同时分类器误判backbone为false,就会触发昆虫分类;另外确认tail、fins等属性值是否符合爬行动物分支的条件,是否因某个属性值不符合,导致分类器走向错误分支。

内容的提问来源于stack exchange,提问作者saltpeter-pan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:12:24