我使用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的函数。 我想明白为什么结果突然变得正确。