示例#1
0
  public void evaluate(List<Sample> sampleList, Algorithm algorithm) {

    List<Score> scoreList = new ArrayList<Score>();
    for (Sample sample : sampleList) {
      scoreList.add(new Score(algorithm.predict(sample.getFeature()), sample.getLabel()));
    }
    Collections.sort(scoreList, new ComparatorScore());
    double counter = 0;
    double rankSum = 0;
    double positiveSample = 0;
    double negtiveSample = 0;
    for (Score s : scoreList) {
      if (s.label > 0) {
        rankSum += scoreList.size() - counter;
        positiveSample++;
      } else {
        negtiveSample++;
      }
      counter++;
    }

    // report.
    System.out.println("AUC: " + AUC.measure(algorithm, sampleList));
    System.out.println(
        "AUC: "
            + (positiveSample > 0 && negtiveSample > 0
                ? 1.0d
                    * (rankSum - positiveSample * (positiveSample + 1) / 2)
                    / (positiveSample * negtiveSample)
                : 1));
    System.out.println("Positive sample number: " + positiveSample);
    System.out.println("Negative sample number: " + negtiveSample);
    System.out.println("Max score: " + scoreList.get(0).score);
    System.out.println("Middle score: " + scoreList.get(scoreList.size() / 2).score);
    System.out.println("Min score: " + scoreList.get(scoreList.size() - 1).score);
  }