Skip to content
Snippets Groups Projects
Tibo's avatar
Tibo authored
81b6e570
History

java-roc

pipeline status

Java library for computing Receiver Operating Characteristic (ROC) and Area Under the Curve (AUC).

A Receiver Operating Characteristic curve (ROC curve) is a a graphical plot that illustrates the diagnostic ability of a binary classifier system when its discrimination threshold is varied. The ROC curve is plotting with the False Positive Rate (False alarm) on the X axis and the True Positive Rate (true detection) on the Y axis. It is a very interresting tool to determine the efficiency of a classifier in machine learning. The Area Under the Curve (AUC) is a simple way to compare different ROC curves and to determine the best one. Closer to 1 is the AUC value better is the classifier.

Installation

Using maven:

<dependency>
    <groupId>be.cylab</groupId>
    <artifactId>java-roc</artifactId>
    <version>0.0.4</version>
</dependency>

https://mvnrepository.com/artifact/be.cylab/java-roc

Usage

Arrays as argument

public static void main(final String[] args) {
    double[] score = new double[10];
    //Generate elements
    for (int i = 0; i < score.length; i++) {
        score[i] = Math.random();
    }
	//Creation of array true_alert
    boolean[] true_alert = new boolean[] {
            false,
            true,
            false,
            true,
            true,
            false,
            true,
            true,
            false,
            false
    };
    //Creation of Roc object
    Roc roc = new Roc(score, true_alert);
    //AUC computation and printing
    System.out.println(roc.computeAUC());
	//Roc points computation
    List<RocCoordinates> roc_coordinates =
                roc.computeRocPointsAndGenerateCurve("Roc_curve.png");
    //Save RocCoordinates in a CSV file
    Utils.storeRocCoordinatesInCSVFile(roc_coordinates, "/home/alex/Desktop/Test.csv");
}
  • ROC object takes an array of double (between 0 and 1) and an array of boolean elements.
  • Method computeRocPoints return a list of RocCoordinates. RocCoordinates represents the X and Y coordinates of a point in the ROC space.
  • Method computeRocPointsAndGenerateCurve return a list of RocCoordinates. The method produces also an image of the the curve.
  • Method storeRocCoordinatesInCSVFile takes a list of RocCoordinates and String (file path) and store all elements un a CSV file.

From CSV file

public static void main(final String[] args) {
    //Creation of Roc object
    Roc roc = new Roc("Data.csv");
    //AUC computation and printing
    System.out.println(roc.computeAUC());
	//Roc points computation
    List<RocCoordinates> roc_coordinates = roc.computeRocPoints();
    //Save RocCoordinates in a CSV file
    Utils.storeRocCoordinatesInCSVFile(roc_coordinates, "/home/alex/Desktop/Test.csv");
}
  • The CSV file used to build the Roc object must have score elements in the first column (double) and true alert elements in the second (boolean).