Exemplo n.º 1
0
  @Override
  public String toString() {
    StringBuilder returnString = new StringBuilder();

    returnString.append('\n');
    returnString.append("=======================================================\n");
    returnString.append("Summary\n");
    returnString.append("-------------------------------------------------------\n");
    int totalClassified = correctlyClassified + incorrectlyClassified;
    double percentageCorrect = (double) 100 * correctlyClassified / totalClassified;
    double percentageIncorrect = (double) 100 * incorrectlyClassified / totalClassified;
    NumberFormat decimalFormatter = new DecimalFormat("0.####");

    returnString
        .append(StringUtils.rightPad("Correctly Classified Instances", 40))
        .append(": ")
        .append(StringUtils.leftPad(Integer.toString(correctlyClassified), 10))
        .append('\t')
        .append(StringUtils.leftPad(decimalFormatter.format(percentageCorrect), 10))
        .append("%\n");
    returnString
        .append(StringUtils.rightPad("Incorrectly Classified Instances", 40))
        .append(": ")
        .append(StringUtils.leftPad(Integer.toString(incorrectlyClassified), 10))
        .append('\t')
        .append(StringUtils.leftPad(decimalFormatter.format(percentageIncorrect), 10))
        .append("%\n");
    returnString
        .append(StringUtils.rightPad("Total Classified Instances", 40))
        .append(": ")
        .append(StringUtils.leftPad(Integer.toString(totalClassified), 10))
        .append('\n');
    returnString.append('\n');

    returnString.append(confusionMatrix);
    returnString.append("=======================================================\n");
    returnString.append("Statistics\n");
    returnString.append("-------------------------------------------------------\n");

    RunningAverageAndStdDev normStats = confusionMatrix.getNormalizedStats();
    returnString
        .append(StringUtils.rightPad("Kappa", 40))
        .append(StringUtils.leftPad(decimalFormatter.format(confusionMatrix.getKappa()), 10))
        .append('\n');
    returnString
        .append(StringUtils.rightPad("Accuracy", 40))
        .append(StringUtils.leftPad(decimalFormatter.format(confusionMatrix.getAccuracy()), 10))
        .append("%\n");
    returnString
        .append(StringUtils.rightPad("Reliability", 40))
        .append(
            StringUtils.leftPad(decimalFormatter.format(normStats.getAverage() * 100.00000001), 10))
        .append("%\n");
    returnString
        .append(StringUtils.rightPad("Reliability (standard deviation)", 40))
        .append(StringUtils.leftPad(decimalFormatter.format(normStats.getStandardDeviation()), 10))
        .append('\n');
    returnString
        .append(StringUtils.rightPad("Weighted precision", 40))
        .append(
            StringUtils.leftPad(
                decimalFormatter.format(confusionMatrix.getWeightedPrecision()), 10))
        .append('\n');
    returnString
        .append(StringUtils.rightPad("Weighted recall", 40))
        .append(
            StringUtils.leftPad(decimalFormatter.format(confusionMatrix.getWeightedRecall()), 10))
        .append('\n');
    returnString
        .append(StringUtils.rightPad("Weighted F1 score", 40))
        .append(
            StringUtils.leftPad(decimalFormatter.format(confusionMatrix.getWeightedF1score()), 10))
        .append('\n');

    if (hasLL) {
      returnString
          .append(StringUtils.rightPad("Log-likelihood", 30))
          .append("mean      : ")
          .append(StringUtils.leftPad(decimalFormatter.format(summarizer.getMean()), 10))
          .append('\n');
      returnString
          .append(StringUtils.rightPad("", 30))
          .append(StringUtils.rightPad("25%-ile   : ", 10))
          .append(StringUtils.leftPad(decimalFormatter.format(summarizer.getQuartile(1)), 10))
          .append('\n');
      returnString
          .append(StringUtils.rightPad("", 30))
          .append(StringUtils.rightPad("75%-ile   : ", 10))
          .append(StringUtils.leftPad(decimalFormatter.format(summarizer.getQuartile(3)), 10))
          .append('\n');
    }

    return returnString.toString();
  }