Ошибка при запуске NBTree и Случайного леса через Weka, Java - PullRequest
0 голосов
/ 10 мая 2018

Я реализую комбинацию NBTree и Случайного леса через правило продукта. Мой код работает нормально, пока я использую тот же набор данных для обучения и тестирования, но я получаю сообщение об ошибке, когда я использую новый набор данных для тестирования. Это реализация.

RandomForest objRandomForest = new RandomForest();
Classifier[] objClassifiers = {objNBTree,objRandomForest};
objVote.setClassifiers(objClassifiers);

System.out.println("=== Building Model ===");

objVote.buildClassifier(train);

Evaluation eval = new Evaluation(test);
eval.evaluateModel(objVote, test);

System.out.println(eval.toSummaryString("\nResults\n===============\n", true));

В наборе данных содержится много атрибутов с числовыми значениями, поэтому я также раздал их и ниже приведен код

BufferedReader reader = new BufferedReader(
            new FileReader("C:/Users/MUHAMMAD GALA/Documents/CN/Project/NSL_KDD-master/test1000b.arff"));
Instances data = new Instances(reader);

String[] options = new String[2];
options[0] = "-R";
options[1] = "First-last";
Discretize d = new Discretize();
d.setOptions(options);
d.setInputFormat(data);
Instances newData = Filter.useFilter(data, d);

ArffSaver saver = new ArffSaver();
saver.setInstances(newData);
saver.setFile(new File("C:/Users/MUHAMMAD GALA/Documents/CN/Project/NSL_KDD-master/test1000c.arff"));
saver.writeBatch();

Я получаю ошибку:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
at weka.classifiers.trees.j48.NBTreeNoSplit.classProb(Unknown Source)
at weka.classifiers.trees.j48.ClassifierTree.getProbs(Unknown Source)
at weka.classifiers.trees.j48.ClassifierTree.getProbs(Unknown Source)
at weka.classifiers.trees.j48.ClassifierTree.distributionForInstance(Unknown Source)
at weka.classifiers.trees.NBTree.distributionForInstance(Unknown Source)
at weka.classifiers.meta.Vote.distributionForInstanceProduct(Unknown Source)
at weka.classifiers.meta.Vote.distributionForInstance(Unknown Source)
at weka.classifiers.Evaluation.evaluateModelOnceAndRecordPrediction(Unknown Source)
at weka.classifiers.Evaluation.evaluateModel(Unknown Source)
at combinationkitesting.CombinationKiTesting.MajorityVotePrediction(CombinationKiTesting.java:88)
at combinationkitesting.CombinationKiTesting.main(CombinationKiTesting.java:54)
...