public void doit() throws Exception { PredictionModelModule pmm = (PredictionModelModule) pullInput(0); Table t = (Table) pullInput(1); PredictionTable pt = pmm.predict(t); int[] outputs = pt.getOutputFeatures(); int[] preds = pt.getPredictionSet(); int numRows = pt.getNumRows(); String[] names = new String[preds.length]; double[] errors = new double[preds.length]; for (int i = 0; i < preds.length; i++) { int numCorrect = 0; for (int j = 0; j < numRows; j++) { String orig = pt.getString(j, outputs[i]); String pred = pt.getString(j, preds[i]); if (orig.equals(pred)) numCorrect++; } names[i] = pt.getColumnLabel(preds[i]); errors[i] = 1 - ((double) numCorrect) / ((double) numRows); } ParameterPoint pp = ParameterPointImpl.getParameterPoint(names, errors); pushOutput(pp, 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); } }