странные результаты появляются при использовании дерева 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).
Спасибо и всего наилучшего.