我正在为 Weka API 使用某种 hello world 示例。我在从数据库创建实例时发现了一个问题。 情况: 我有一个包含两个表 trainset(id, value, classValue) 和 testset(id, value, classValue) 的数据库。
每个表包含 10 行一些示例数据,应该 100% 正确分类。trainset 的第一行是 (1, 5, "low"),testset 的第一行是 (1, 15, "high")。
当 Weka 创建Instances对象时,它似乎也自动创建了一个类 Attribute 对象。
train = query.retrieveInstances();
train.setClassIndex(train.numAttributes() - 1);
第一组的类属性是
@attribute classValue {low,high}
...第二个
@attribute classValue {high,low}
当我进行评估时,它显示
Incorrectly Classified Instances 10 100 %
这是由混淆的 classValue 属性引起的。
有什么办法可以预先告诉类属性应该是什么样子,或者我可以以某种方式更改映射?我已经试过了
FastVector fvClassVal = new FastVector(2);
fvClassVal.addElement("low");
fvClassVal.addElement("high");
Attribute classAttribute = new Attribute("classValue", fvClassVal);
test.setClass(classAttribute);
但这似乎不起作用,它仍然想知道 classIndex 并覆盖以前的属性。