我使用 WEKA Java Api 训练和创建 J48 模型。然后,我使用classifyInstance() 对我的实例进行分类。但结果是错误的。我的代码ID如下:
Instances train = reader.getDataSet();
Instances test = reader_test.getDataSet();
train.setClassIndex(train.numAttributes() - 1);
Classifier cls = new J48();
cls.buildClassifier(train);
test.setClassIndex(test.numAttributes() - 1);
for(int i = 0; i < test.numInstances(); i++){
Instance inst = test.instance(i);
double result = cls.classifyInstance(inst);
System.out.println(train.classAttribute().value((int)r));
}
结果始终等于 0.0
最后,我在 test.setClassIndex() 之前使用了 test.insertAttributeAt()。如下:
test.insertAttributeAt(train.attribute(train.numAttributes() - 1), test.numAttributes());
结果变得对了。我很惊讶!但是,大多数文档都没有使用inserAttribute 函数。我想了解为什么结果突然变得正确。