/* * EvaluationConfiguration.java * * Yaoyong Li 22/03/2007 * * $Id: EvaluationConfiguration.java, v 1.0 2007-03-22 12:58:16 +0000 yaoyong $ */ package gate.learning; import org.jdom.Element; /** * Store the spefications of evaluation method and the details. */ public class EvaluationConfiguration { /** k-fold. */ public static final int kfold = 1; /** Hold-out test */ public static final int split = 2; /** Evaluation method used. */ public int mode = EvaluationConfiguration.split; /** Ratio of training data in the whole data for hold-out test. */ public double ratio = 0.66d; /** k for the k-fold and the number of runs for the hold-out test. */ public int kk = 1; /** Creates an EvaluationConfiguration with the default values * */ public EvaluationConfiguration() { } /** Uses K-fold cross validation. */ public EvaluationConfiguration(int kk) { mode = EvaluationConfiguration.kfold; this.kk = kk; } /** * Hold-out evaluation. Ratio has a value between 0 and 1 and indicates the * ratio of instances to be used for training. A typical value is 0.66. kk is * the number of runs for the random selection. */ public EvaluationConfiguration(double ratio, int kk) { this.mode = EvaluationConfiguration.split; this.ratio = ratio; this.kk = kk; } /** Constructor just using the ratio. */ public EvaluationConfiguration(double ratio) { this.mode = EvaluationConfiguration.split; this.ratio = ratio; this.kk = 1; } /** Create an object from an XML element in configuration file. */ public static EvaluationConfiguration fromXML(Element domElement) { if(domElement == null) return new EvaluationConfiguration(); String method = domElement.getAttributeValue("method"); String kk = domElement.getAttributeValue("runs"); String value = domElement.getAttributeValue("ratio"); boolean kfold = method.equalsIgnoreCase("kfold"); if(kfold) { return new EvaluationConfiguration(Integer.parseInt(kk)); } if(kk == null) { return new EvaluationConfiguration(Double.parseDouble(value)); } else { return new EvaluationConfiguration(Double.parseDouble(value), Integer .parseInt(kk)); } } }