public void buildClassifier(Dataset data) { double[] result = new double[upperC - lowerC]; for (int i = lowerC; i < upperC; i++) { LibSVM svm = new LibSVM(); svm.getParameters().C = Math.pow(2, i); CrossValidation cv = new CrossValidation(svm); Map<Object, PerformanceMeasure> score = cv.crossValidation(data, folds, rg); try { for (Object o : score.keySet()) result[i - lowerC] += score.get(o).getFMeasure(); } catch (RuntimeException e) { // TODO Auto-generated catch block // System.out.println(positiveClass.getClass()); System.err.println(score.keySet().iterator().next().getClass()); // System.err.println(positiveClass); System.err.println(score); // System.err.println(score.get(positiveClass)); e.printStackTrace(); System.exit(-1); } } fmeasures = result; int index = ArrayUtils.maxIndex(result); optimal = new LibSVM(); optimalC = Math.pow(2, index + lowerC); optimal.getParameters().C = optimalC; optimal.buildClassifier(data); }
svm = new SelfOptimizingLinearLibSVM(-4, 4, internalFolds); else { svm = new LibSVM(); svm.getParameters().C=1;