From: <jen...@us...> - 2010-07-09 20:00:38
|
Revision: 2194 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2194&view=rev Author: jenslehmann Date: 2010-07-09 20:00:32 +0000 (Fri, 09 Jul 2010) Log Message: ----------- script to generate a table of example accuracies Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java trunk/src/dl-learner/org/dllearner/scripts/evaluation/HeuristicOverviewTableGenerator.java Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2010-07-09 12:22:02 UTC (rev 2193) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2010-07-09 20:00:32 UTC (rev 2194) @@ -720,9 +720,11 @@ } // computes accuracy from coverage and protusion (changing this function may - // make it necessary to change the appoximation too) - private double getAccuracy(double coverage, double protusion) { - return (coverageFactor * coverage + Math.sqrt(protusion)) / (coverageFactor + 1); + // make it necessary to change the appoximation too) => not the case anymore + private double getAccuracy(double recall, double precision) { +// return (coverageFactor * coverage + Math.sqrt(protusion)) / (coverageFactor + 1); + // log: changed from precision^^0.5 (root) to precision^^0.8 as the root is too optimistic in some cases + return (coverageFactor * recall + Math.pow(precision, 0.8)) / (coverageFactor + 1); } private double getFMeasure(double recall, double precision) { Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/HeuristicOverviewTableGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/HeuristicOverviewTableGenerator.java 2010-07-09 12:22:02 UTC (rev 2193) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/HeuristicOverviewTableGenerator.java 2010-07-09 20:00:32 UTC (rev 2194) @@ -19,6 +19,7 @@ */ package org.dllearner.scripts.evaluation; +import java.text.DecimalFormat; import java.util.LinkedList; import java.util.List; @@ -72,6 +73,7 @@ } private List<Input> inputs; + private DecimalFormat df = new DecimalFormat(); public HeuristicOverviewTableGenerator(List<Input> inputs) { this.inputs = inputs; @@ -83,9 +85,18 @@ double recall = getRecall(input); double fMeasureEq = getFMeasure(recall, precision, 1); double fMeasureSc = getFMeasure(recall, precision, 3); + double aMeasureEq = getAMeasure(recall, precision, 1); + double aMeasureSc = getAMeasure(recall, precision, 3); + double predAccEq = getPredAcc(input, 1); + double predAccSc = getPredAcc(input, 3); + double jaccard = getJaccard(input); System.out.println("input: " + input); - System.out.println("FMeasure: eq. " + fMeasureEq + " sc. " + fMeasureSc); + System.out.println("recall: " + df.format(recall) + " precision: " + df.format(precision)); + System.out.println("FMeasure: eq. " + df.format(fMeasureEq) + " sc. " + df.format(fMeasureSc)); + System.out.println("AMeasure: eq. " + df.format(aMeasureEq) + " sc. " + df.format(aMeasureSc)); + System.out.println("pred.acc.: eq. " + df.format(predAccEq) + " sc. " + df.format(predAccSc)); + System.out.println("Jaccard: " + df.format(jaccard)); System.out.println(); } @@ -105,6 +116,24 @@ / (Math.sqrt(factor) * precision + recall) ); } + private double getAMeasure(double recall, double precision, double factor) { + return (factor * recall + precision) / (factor + 1); + } + + @SuppressWarnings("unused") + private double getOwnMeasure(double recall, double precision, double factor) { +// return (factor * recall + Math.sqrt(precision)) / (factor + 1); + return (factor * recall + Math.pow(precision, 0.8)) / (factor + 1); + } + + private double getPredAcc(Input input, double factor) { + return (factor*input.intersectionSuggestionClass + input.kbInstances - input.classInstances - input.suggestionInstances + input.intersectionSuggestionClass) / (double) (input.kbInstances + (factor-1)*input.classInstances); + } + + private double getJaccard(Input input) { + return input.intersectionSuggestionClass / (double) (input.classInstances + input.suggestionInstances - input.intersectionSuggestionClass); + } + /** * @param args none */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |