public void computeError(PredictionTable tt, int m) { int rows = tt.getNumRows(); int columns = tt.getNumOutputFeatures(); // store an rms error for each output feature, make sure to initialize to zero double[] rmse = new double[columns]; for (int i = 0; i < rmse.length; i++) { rmse[i] = 0; } int[] ttOuts = tt.getOutputFeatures(); int[] ttPreds = tt.getPredictionSet(); for (int j = 0; j < columns; j++) { for (int i = 0; i < rows; i++) { double row_error; double prediction = tt.getDouble(i, ttPreds[j]); double target = tt.getDouble(i, ttOuts[j]); if (printResults) { System.out.println("T,P,: " + target + "," + prediction); } row_error = Math.abs(target - prediction); row_error *= row_error; rmse[j] += row_error; } } for (int j = 0; j < rmse.length; j++) { rmse[j] = rmse[j] / rows; rmse[j] = Math.sqrt(rmse[j]); // put the error in the verticalTable metrics.setDouble(rmse[j], m, j); } }