Я пытаюсь протестировать один экземпляр, используя API weka в Java. Моя цель - предсказать значение класса для одного экземпляра в файле test.arff.Как проверить один экземпляр в Weka с помощью модели, которую я создал?
Мой ява код выглядит так,
import weka.core.Instances;
import weka.classifiers.Evaluation;
import weka.classifiers.trees.J48;
import weka.classifiers.*;
import java.io.*;
import java.util.Random;
public class WekaNew {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.out.println("Weka Tool");
BufferedReader breader = new BufferedReader(new FileReader("train.arff"));
Instances train = new Instances(breader);
train.setClassIndex(train.numAttributes() -1);
breader.close(); //loading training data
BufferedReader treader = new BufferedReader(new FileReader("test.arff"));
Instances test = new Instances(treader);
test.setClassIndex(test.numAttributes() -1);
treader.close(); //loading testing data
Classifier cls = new J48();
cls.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.evaluateModelOnce(cls,test);
System.out.println(eval.toMatrixString("\nConfusion Matrix\n========\n"));
}
}
train.arff имеет 7 (атрибуты) +1 (класс Label) наряду с 132 экземплярами данных. Test.arff имеет 7 атрибутов + 1 класс label =? с одним экземпляром.
Я хочу предсказать метку класса для единственного экземпляра в test.arff. Как мне спрогнозировать метку и какие изменения необходимо внести в набор данных и код?
Я попытался компиляции файла Java с помощью «JAVAC -cp„/ классам“WekaNew.java» , он дает следующее сообщение об ошибке «Нет подходящий метод нашел для evaluateModelOnce()»
Новое в деградируют API и Java в целом. Извините заранее, если вопрос повторится.
Я также упомянул следующие вопросы в Stackoverflow, 1. Test single instance in weka which has no class label 2. Test a single instance in Weka , но это не похоже, чтобы решить мою проблему.
Спасибо большое! Работает как шарм! Есть ли способ идентифицировать метку класса тестового экземпляра? –
Можете ли вы уточнить, что вы хотите сделать? Вы уже знаете, что метка класса находится в 'test.numAttributes() -1', правильно? –