0

This is my code snippet , which I found as an answer to another question :

fName = 'E:/WEKA/Weka-3-6/data/iris.arff';
loader = weka.core.converters.ArffLoader();
loader.setFile(java.io.File(fName));
data = loader.getDataSet();
data.setClassIndex(data.numAttributes()-1);


fName1 = 'E:/WEKA/Weka-3-6/data/test.arff';
loader = weka.core.converters.ArffLoader();
loader.setFile(java.io.File(fName1));
test = loader.getDataSet();
test.setClassIndex(data.numAttributes()-1);

%# train a J48 tree
classifier = weka.classifiers.trees.J48();
classifier.setOptions( weka.core.Utils.splitOptions('-c last -C 0.25-M    2') );
 classifier.buildClassifier(data);


%# classify test instances
numInst = test.numInstances();
pred = zeros(numInst,1);
predProbs = zeros(numInst, data.numClasses());
 for i=1:numInst
 pred(i) = classifier.classifyInstance( test.instance(i-1) );
 predProbs(i,:) = classifier.distributionForInstance( test.instance(i-1)   );
   end

   %# evaluation

eval = weka.classifiers.Evaluation(data);

eval.evaluateModel(classifier, test, javaArray('java.lang.Object',1));

fprintf('=== Run information ===\n\n')
fprintf('Scheme: %s %s\n', ...
char(classifier.getClass().getName()), ...
char(weka.core.Utils.joinOptions(classifier.getOptions())) )
fprintf('Relation: %s\n', char(data.relationName))
fprintf('Instances: %d\n',data.numInstances)
fprintf('Attributes: %d\n\n', data.numAttributes)

fprintf('=== Classifier model ===\n\n')
 disp( char(classifier.toString()) )

fprintf('=== Summary ===\n')
disp( char(eval.toSummaryString()) )
disp( char(eval.toClassDetailsString()) )
 disp( char(eval.toMatrixString()) )

I tried executing the above code snippet, and a java exception is being thrown the error message is :

"Java exception occurred:
 java.lang.ArrayIndexOutOfBoundsException: 1

 at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1473)"

"pred = evl.evaluateModel(classifier,data,{''});" is the exact line that is being pointed to by the error message.

I tried everything, re-installed WEKA, Java as well.But to no use.

any suggestions on getting past this error?

EDIT

The error got rectified after upgrading to WEKA 3-7, an error/bug with the library file in WEKA 3-6 I'm guessing.

  • Are your training and test sets aligned (same number of features, same header)? See [this possibly relevant Q&A](http://stackoverflow.com/questions/10947015/does-test-file-in-weka-requires-same-or-less-number-of-features-as-train). – dfrib Mar 15 '16 at 21:18
  • Thank you, the error no longer appeared after upgrading to Weka 3-7, it was some error to do with the library files! – Alisha R Murugesh Mar 15 '16 at 21:41
  • Glad to hear you got it sorted out. – dfrib Mar 15 '16 at 21:42

0 Answers0