Я реализую комбинацию 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)