Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsLearningsrcgatelearning 〉 EvaluationConfiguration.java
 
/*
 *  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));
    }
  }
}