private void updateConfusionMatrix( ConfusionMatrix m, Example ex, double compatDecisionThreshold, double probDecisionThreshold) { List<Derivation> derivations = ex.getPredDerivations(); double[] probs = Derivation.getProbs(derivations, 1.0d); for (int i = 0; i < derivations.size(); i++) { Derivation deriv = derivations.get(i); double gold, pred; if (compatDecisionThreshold == -1.0d) gold = deriv.getCompatibility(); else gold = (deriv.getCompatibility() > compatDecisionThreshold) ? 1.0d : 0.0d; if (probDecisionThreshold == -1.0d) pred = probs[i]; else pred = (probs[i] > probDecisionThreshold) ? 1.0d : 0.0d; m.tp += gold * pred; m.fn += gold * (1.0d - pred); m.fp += (1.0d - gold) * pred; m.tn += (1.0d - gold) * (1.0d - pred); } }