j48graft.java

来自「Weka」· Java 代码 · 共 823 行 · 第 1/2 页

JAVA
823
字号
   * <pre> -A   *  Laplace smoothing for predicted probabilities.   *  (note: this option only affects initial tree; grafting process always uses laplace). </pre>   *   * <pre> -E   * Allow relabelling when performing grafting.</pre>   *   <!-- options-end -->   *   * @param options the list of options as an array of strings   * @throws Exception if an option is not supported   */  public void setOptions(String[] options) throws Exception {     // Other options    String minNumString = Utils.getOption('M', options);    if (minNumString.length() != 0) {      m_minNumObj = Integer.parseInt(minNumString);    } else {      m_minNumObj = 2;    }    m_binarySplits = Utils.getFlag('B', options);    m_useLaplace = Utils.getFlag('A', options);    // Pruning options    m_unpruned = Utils.getFlag('U', options);    m_subtreeRaising = !Utils.getFlag('S', options);    m_noCleanup = Utils.getFlag('L', options);		if ((m_unpruned) && (!m_subtreeRaising)) {      throw new Exception("Subtree raising doesn't need to be unset for unpruned tree!");    }    m_relabel = Utils.getFlag('E', options);    String confidenceString = Utils.getOption('C', options);    if (confidenceString.length() != 0) {      if (m_unpruned) {	throw new Exception("Doesn't make sense to change confidence for unpruned "			    +"tree!");      } else {	m_CF = (new Float(confidenceString)).floatValue();	if ((m_CF <= 0) || (m_CF >= 1)) {	  throw new Exception("Confidence has to be greater than zero and smaller " +			      "than one!");	}      }    } else {      m_CF = 0.25f;    }  }  /**   * Gets the current settings of the Classifier.   *   * @return an array of strings suitable for passing to setOptions   */  public String [] getOptions() {    String [] options = new String [10];    int current = 0;    if (m_noCleanup) {      options[current++] = "-L";    }    if (m_unpruned) {      options[current++] = "-U";    } else {      if (!m_subtreeRaising) {	options[current++] = "-S";      }      options[current++] = "-C"; options[current++] = "" + m_CF;    }    if (m_binarySplits) {      options[current++] = "-B";    }    options[current++] = "-M"; options[current++] = "" + m_minNumObj;    if (m_useLaplace) {      options[current++] = "-A";    }    if(m_relabel) {       options[current++] = "-E";    }    while (current < options.length) {      options[current++] = "";    }    return options;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String useLaplaceTipText() {    return "Whether counts at leaves are smoothed based on Laplace.";  }  /**   * Get the value of useLaplace.   *   * @return Value of useLaplace.   */  public boolean getUseLaplace() {        return m_useLaplace;  }    /**   * Set the value of useLaplace.   *   * @param newuseLaplace Value to assign to useLaplace.   */  public void setUseLaplace(boolean newuseLaplace) {        m_useLaplace = newuseLaplace;  }    /**   * Returns a description of the classifier.   *   * @return a description of the classifier   */  public String toString() {    if (m_root == null) {      return "No classifier built";    }    if (m_unpruned)      return "J48graft unpruned tree\n------------------\n" + m_root.toString();    else      return "J48graft pruned tree\n------------------\n" + m_root.toString();  }  /**   * Returns a superconcise version of the model   *   * @return a summary of the model   */  public String toSummaryString() {    return "Number of leaves: " + m_root.numLeaves() + "\n"         + "Size of the tree: " + m_root.numNodes() + "\n";  }  /**   * Returns the size of the tree   * @return the size of the tree   */  public double measureTreeSize() {    return m_root.numNodes();  }  /**   * Returns the number of leaves   * @return the number of leaves   */  public double measureNumLeaves() {    return m_root.numLeaves();  }  /**   * Returns the number of rules (same as number of leaves)   * @return the number of rules   */  public double measureNumRules() {    return m_root.numLeaves();  }  /**   * Returns an enumeration of the additional measure names   * @return an enumeration of the measure names   */  public Enumeration enumerateMeasures() {    Vector newVector = new Vector(3);    newVector.addElement("measureTreeSize");    newVector.addElement("measureNumLeaves");    newVector.addElement("measureNumRules");    return newVector.elements();  }  /**   * Returns the value of the named measure   * @param additionalMeasureName the name of the measure to query for its value   * @return the value of the named measure   * @throws IllegalArgumentException if the named measure is not supported   */  public double getMeasure(String additionalMeasureName) {    if (additionalMeasureName.compareTo("measureNumRules") == 0) {      return measureNumRules();    } else if (additionalMeasureName.compareTo("measureTreeSize") == 0) {      return measureTreeSize();    } else if (additionalMeasureName.compareTo("measureNumLeaves") == 0) {      return measureNumLeaves();    } else {      throw new IllegalArgumentException(additionalMeasureName			  + " not supported (j48)");    }  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String unprunedTipText() {    return "Whether pruning is performed.";  }  /**   * Get the value of unpruned.   *   * @return Value of unpruned.   */  public boolean getUnpruned() {    return m_unpruned;  }  /**   * Set the value of unpruned.   * @param v  Value to assign to unpruned.   */  public void setUnpruned(boolean v) {    m_unpruned = v;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String relabelTipText() {    return "Whether relabelling is allowed during grafting.";  }  /**   * Get the value of relabelling   *   * @return Value of relabelling.   */  public boolean getRelabel() {    return m_relabel;  }  /**   * Set the value of relabelling.    *   * @param v  Value to assign to relabelling flag.   */  public void setRelabel(boolean v) {    m_relabel = v;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String confidenceFactorTipText() {    return "The confidence factor used for pruning (smaller values incur "      + "more pruning).";  }  /**   * Get the value of CF.   *   * @return Value of CF.   */  public float getConfidenceFactor() {        return m_CF;  }    /**   * Set the value of CF.   *   * @param v  Value to assign to CF.   */  public void setConfidenceFactor(float v) {        m_CF = v;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String minNumObjTipText() {    return "The minimum number of instances per leaf.";  }  /**   * Get the value of minNumObj.   *   * @return Value of minNumObj.   */  public int getMinNumObj() {        return m_minNumObj;  }    /**   * Set the value of minNumObj.   *   * @param v  Value to assign to minNumObj.   */  public void setMinNumObj(int v) {        m_minNumObj = v;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String binarySplitsTipText() {    return "Whether to use binary splits on nominal attributes when "      + "building the trees.";  }    /**   * Get the value of binarySplits.   *   * @return Value of binarySplits.   */  public boolean getBinarySplits() {    return m_binarySplits;  }  /**   * Set the value of binarySplits.   *   * @param v  Value to assign to binarySplits.   */  public void setBinarySplits(boolean v) {        m_binarySplits = v;  }    /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String subtreeRaisingTipText() {    return "Whether to consider the subtree raising operation when pruning.";  }   /**   * Get the value of subtreeRaising.   *   * @return Value of subtreeRaising.   */  public boolean getSubtreeRaising() {        return m_subtreeRaising;  }    /**   * Set the value of subtreeRaising.   *   * @param v  Value to assign to subtreeRaising.   */  public void setSubtreeRaising(boolean v) {        m_subtreeRaising = v;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String saveInstanceDataTipText() {    return "Whether to save the training data for visualization.";  }  /**   * Check whether instance data is to be saved.   *   * @return true if instance data is saved   */  public boolean getSaveInstanceData() {        return m_noCleanup;  }    /**   * Set whether instance data is to be saved.   * @param v true if instance data is to be saved   */  public void setSaveInstanceData(boolean v) {    m_noCleanup = v;  }   /**   * Main method for testing this class   *   * @param argv the commandline options   */  public static void main(String [] argv){    runClassifier(new J48graft(), argv);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?