使用 J48 树时出现奇怪的结果。我需要对一个包含 48 个特征的向量进行分类,效果很好,但是当我尝试“优化”时,我遇到了奇怪的结果。
我有一个方法分类:
public boolean classify(double feature1, double feature2, double[] featureVec ) {
Instance toBeClassified = new Instance(2+featureVec.length);
toBeClassified.setValue(0, feature1);
toBeClassified.setValue(1, feature2);
for (int i = 2; i < f.length + 2; ++i) {
toBeClassified.setValue(i, featureVec [i - 2]);
}
toBeClassified.setDataset(dataset);
try {
double _class = tree.classifyInstance(toBeClassified);
return _class > 0;
} catch (Exception e1) {
if(Logging.active) {
logger.error(e1.getMessage(), e1.getCause());}
}
return false;
}
}
它工作得很好,我希望我做对了。但我想删除在每个方法调用时完成的实例创建,所以我将 Instance 移至 BeClassified = new Instance(48); 进入类主体 - 所以它只创建一次。这也很有效,尽管我得到的结果与其他结果略有不同。可以说,从 400 个分类中,有一个是不同的(不是说,不正确)。但是我看不出这是什么原因……我希望这里有一些人在使用 weka,以便我了解发生了什么/错误。(是的,2+featureVec.length 是 48)。
谢谢并恭祝安康。