package org.shanbo.feluca.classification.common;
/**
* implement your evaluator
* @author lgn
*
*/
public abstract class Evaluator {
public abstract String resultString() ;
public abstract void collect(int label, double[] probs);
public static class BinaryMAE extends Evaluator{
@Override
public String resultString() {
// TODO Auto-generated method stub
return null;
}
@Override
public void collect(int label, double[] probs) {
// TODO Auto-generated method stub
}
}
/**
* Accuracy evaluator for 2 classes classification
* @author lgn
*
*/
public static class BinaryAccuracy extends Evaluator{
private int totals = 0;
private int corrects = 0;
@Override
public String resultString() {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder("-------------------------\n");
sb.append(String.format(" Accuracy : %d/%d =%.2f\n", corrects, totals, (corrects * 100.0 / totals)));
sb.append("-------------------------\n");
return sb.toString();
}
/**
* use converted label!
*/
public void collect(int label, double[] probs) {
// TODO Auto-generated method stub
totals += 1;
if ((probs[0] > 0.5 && label == 0) ||(probs[0] < 0.5 && label == 1))
corrects += 1;
}
public String toString(){
return this.resultString();
}
}
public static class BinaryPrecisionRecall extends Evaluator{
@Override
public String resultString() {
// TODO Auto-generated method stub
return null;
}
@Override
public void collect(int label, double[] probs) {
// TODO Auto-generated method stub
}
}
public static class BinaryCommonEvaluator extends Evaluator{
@Override
public String resultString() {
// TODO Auto-generated method stub
return null;
}
@Override
public void collect(int label, double[] probs) {
// TODO Auto-generated method stub
}
}
}