public static double positivePredictiveValue(double tp, double fp) { double r = tp / (tp + fp); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double recall(double tp, double fn) { double r = tp / (tp + fn); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double fBetaMeasure(double beta, double precision, double recall) { double r = ((1 + beta * beta) * precision * recall) / (beta * beta * precision + recall); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double sensitivity(double tp, double fn) { double r = tp / (tp + fn); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double falsePositiveRate(double fp, double tn) { double r = fp / (fp + tn); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double specificity(double tn, double fp) { double r = tn / (tn + fp); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double negativePredictiveValue(double tn, double fn) { double r = tn / (tn + fn); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double precision(double tp, double fp) { double r = tp / (tp + fp); return MathUtil.isNaNOrInfinite(r) ? 0.0 : r; }
public static double getDouble(String message, double min, double max, Double initialValue) { double i = Double.NaN; while (MathUtil.isNaNOrInfinite(i)) { String s = JOptionPane.showInputDialog(message + " (" + min + " to " + max + ")", initialValue); try { i = Double.parseDouble(s); } catch (Exception e) { } } return i; }
public final void setAsDouble(double value, long... coordinates) { verifyTrue(!MathUtil.isNaNOrInfinite(value), "Nan, Inf and -Inf not allowed in this matrix"); setChar((char) value, coordinates); }
public final void setAsDouble(double value, long... coordinates) { verifyTrue(!MathUtil.isNaNOrInfinite(value), "Nan, Inf and -Inf not allowed in this matrix"); setByte((byte) value, coordinates); }
public final boolean containsMissingValues() { for (long[] c : allCoordinates()) { double v = getAsDouble(c); if (MathUtil.isNaNOrInfinite(v)) { return true; } } return false; }
public double getDouble(long... coordinates) { double v = getSource().getAsDouble(coordinates); if (MathUtil.isNaNOrInfinite(v)) { return 0.0; } else { return v; } }
public final void setAsDouble(double value, long... coordinates) { verifyTrue(!MathUtil.isNaNOrInfinite(value), "Nan, Inf and -Inf not allowed in this matrix"); setShort((short) value, coordinates); }
private List<Integer> getCandidates(long... coordinates) { List<Integer> candidates = new ArrayList<Integer>(); for (int r = 0; r < getSource().getRowCount(); r++) { if (coordinates[ROW] == r) { continue; } if (!MathUtil.isNaNOrInfinite(getSource().getAsDouble(r, coordinates[COLUMN]))) { candidates.add(r); } } return candidates; }
public double getDouble(long... coordinates) { if (imputed == null) { createMatrix(); } double v = getSource().getAsDouble(coordinates); if (MathUtil.isNaNOrInfinite(v)) { return imputed.getAsDouble(coordinates); } else { return v; } }
private boolean containsMissingValues(long c) { for (int r = 0; r < getSource().getRowCount(); r++) { if (MathUtil.isNaNOrInfinite(getSource().getAsDouble(r, c))) { return true; } } return false; }
private boolean containsMissingValues(long c) { for (int r = 0; r < getSource().getRowCount(); r++) { if (MathUtil.isNaNOrInfinite(getSource().getAsDouble(r, c))) { return true; } } return false; }
public synchronized double getDouble(long... coordinates) { if (imputed == null) { createMatrix(); } double v = getSource().getAsDouble(coordinates); if (MathUtil.isNaNOrInfinite(v)) { return imputed.getAsDouble(coordinates); } else { return v; } }
public Matrix replaceMissingBy(Matrix matrix) { Matrix ret = Matrix.Factory.zeros(getSize()); for (long[] c : allCoordinates()) { double v = getAsDouble(c); if (MathUtil.isNaNOrInfinite(v)) { ret.setAsDouble(matrix.getAsDouble(c), c); } else { ret.setAsDouble(getAsDouble(c), c); } } return ret; }