Пример #1
0
  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);
    }
  }