private Double evaluateSupportVectorMachine( SupportVectorMachine supportVectorMachine, double[] input) { SupportVectorMachineModel supportVectorMachineModel = getModel(); double result = 0d; Kernel kernel = supportVectorMachineModel.getKernel(); Coefficients coefficients = supportVectorMachine.getCoefficients(); Iterator<Coefficient> coefficientIterator = coefficients.iterator(); SupportVectors supportVectors = supportVectorMachine.getSupportVectors(); Iterator<SupportVector> supportVectorIterator = supportVectors.iterator(); Map<String, double[]> vectorMap = getVectorMap(); while (coefficientIterator.hasNext() && supportVectorIterator.hasNext()) { Coefficient coefficient = coefficientIterator.next(); SupportVector supportVector = supportVectorIterator.next(); double[] vector = vectorMap.get(supportVector.getVectorId()); if (vector == null) { throw new InvalidFeatureException(supportVector); } Double value = KernelUtil.evaluate(kernel, input, vector); result += (coefficient.getValue() * value); } if (coefficientIterator.hasNext() || supportVectorIterator.hasNext()) { throw new InvalidFeatureException(supportVectorMachine); } result += coefficients.getAbsoluteValue(); return result; }