⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jrip.java

📁 代码是一个分类器的实现,其中使用了部分weka的源代码。可以将项目导入eclipse运行
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    m_UsePruning = !Utils.getFlag('P', options);  }      /**   * Gets the current settings of the Classifier.   *   * @return an array of strings suitable for passing to setOptions   */  public String [] getOptions() {    String [] options = new String [11];    int current = 0;    options[current++] = "-F"; options[current++] = "" + m_Folds;    options[current++] = "-N"; options[current++] = "" + m_MinNo;    options[current++] = "-O"; options[current++] = "" + m_Optimizations;    options[current++] = "-S"; options[current++] = "" + m_Seed;	    if(m_Debug)      options[current++] = "-D";    if(!m_CheckErr)      options[current++] = "-E";	    if(!m_UsePruning)      options[current++] = "-P";	    while(current < options.length)      options[current++] = "";	    return options;  }  /**   * Returns an enumeration of the additional measure names   * @return an enumeration of the measure names   */  public Enumeration enumerateMeasures() {    Vector newVector = new Vector(1);    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.compareToIgnoreCase("measureNumRules") == 0)       return m_Ruleset.size();    else       throw new IllegalArgumentException(additionalMeasureName+" not supported (RIPPER)");  }    /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String foldsTipText() {    return "Determines the amount of data used for pruning. One fold is used for "      + "pruning, the rest for growing the rules.";  }  /**   * Sets the number of folds to use   *    * @param fold the number of folds   */  public void setFolds(int fold) {     m_Folds = fold;   }    /**   * Gets the number of folds   *    * @return the number of folds   */  public int getFolds(){     return m_Folds;   }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String minNoTipText() {    return "The minimum total weight of the instances in a rule.";  }  /**   * Sets the minimum total weight of the instances in a rule   *    * @param m the minimum total weight of the instances in a rule   */  public void setMinNo(double m) {    m_MinNo = m;  }    /**   * Gets the minimum total weight of the instances in a rule   *    * @return the minimum total weight of the instances in a rule   */  public double getMinNo(){     return m_MinNo;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String seedTipText() {    return "The seed used for randomizing the data.";  }  /**   * Sets the seed value to use in randomizing the data   *    * @param s the new seed value   */  public void setSeed(long s) {    m_Seed = s;  }    /**   * Gets the current seed value to use in randomizing the data   *    * @return the seed value   */  public long getSeed(){    return m_Seed;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String optimizationsTipText() {    return "The number of optimization runs.";  }  /**   * Sets the number of optimization runs   *    * @param run the number of optimization runs   */  public void setOptimizations(int run) {    m_Optimizations = run;  }    /**   * Gets the the number of optimization runs   *    * @return the number of optimization runs   */  public int getOptimizations() {    return m_Optimizations;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String debugTipText() {    return "Whether debug information is output to the console.";  }  /**   * Sets whether debug information is output to the console   *    * @param d whether debug information is output to the console   */  public void setDebug(boolean d) {    m_Debug = d;  }    /**   * Gets whether debug information is output to the console   *    * @return whether debug information is output to the console   */  public boolean getDebug(){    return m_Debug;  }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String checkErrorRateTipText() {    return "Whether check for error rate >= 1/2 is included" +      " in stopping criterion.";  }  /**   * Sets whether to check for error rate is in stopping criterion   *    * @param d whether to check for error rate is in stopping criterion   */  public void setCheckErrorRate(boolean d) {     m_CheckErr = d;  }    /**   * Gets whether to check for error rate is in stopping criterion   *    * @return true if checking for error rate is in stopping criterion   */  public boolean getCheckErrorRate(){     return m_CheckErr;   }  /**   * Returns the tip text for this property   * @return tip text for this property suitable for   * displaying in the explorer/experimenter gui   */  public String usePruningTipText() {    return "Whether pruning is performed.";  }  /**   * Sets whether pruning is performed   *    * @param d Whether pruning is performed   */  public void setUsePruning(boolean d) {     m_UsePruning = d;  }    /**   * Gets whether pruning is performed   *    * @return true if pruning is performed   */  public boolean getUsePruning(){     return m_UsePruning;   }      /**    * Get the ruleset generated by Ripper    *   * @return the ruleset   */  public FastVector getRuleset(){ return m_Ruleset; }  /**    * Get the statistics of the ruleset in the given position   *   * @param pos the position of the stats, assuming correct   * @return the statistics of the ruleset in the given position   */  public RuleStats getRuleStats(int pos) {    return (RuleStats)m_RulesetStats.elementAt(pos);  }      /**    * The single antecedent in the rule, which is composed of an attribute and    * the corresponding value.  There are two inherited classes, namely NumericAntd   * and NominalAntd in which the attributes are numeric and nominal respectively.   */      private abstract class Antd     implements WeightedInstancesHandler, Copyable, Serializable {	    /** The attribute of the antecedent */    protected Attribute att;	    /** The attribute value of the antecedent.         For numeric attribute, value is either 0(1st bag) or 1(2nd bag) */    protected double value; 	    /** The maximum infoGain achieved by this antecedent test      * in the growing data */    protected double maxInfoGain;	    /** The accurate rate of this antecedent test on the growing data */    protected double accuRate;	    /** The coverage of this antecedent in the growing data */    protected double cover;	    /** The accurate data for this antecedent in the growing data */    protected double accu;	    /**      * Constructor     */    public Antd(Attribute a){      att=a;      value=Double.NaN;       maxInfoGain = 0;      accuRate = Double.NaN;      cover = Double.NaN;      accu = Double.NaN;    }	    /* The abstract members for inheritance */    public abstract Instances[] splitData(Instances data, double defAcRt, 					  double cla);    public abstract boolean covers(Instance inst);    public abstract String toString();	    /**      * Implements Copyable     *      * @return a copy of this object     */    public abstract Object copy(); 	       /* Get functions of this antecedent */    public Attribute getAttr(){ return att; }    public double getAttrValue(){ return value; }    public double getMaxInfoGain(){ return maxInfoGain; }    public double getAccuRate(){ return accuRate; }     public double getAccu(){ return accu; }     public double getCover(){ return cover; }   }      /**    * The antecedent with numeric attribute   */  private class     NumericAntd extends Antd {        /** for serialization */    static final long serialVersionUID = 5699457269983735442L;	    /** The split point for this numeric antecedent */    private double splitPoint;        /**      * Constructor     */    public NumericAntd(Attribute a){       super(a);      splitPoint = Double.NaN;    }    	    /**      * Get split point of this numeric antecedent     *      * @return the split point of this numeric antecedent     */    public double getSplitPoint(){       return splitPoint;    }	    /**      * Implements Copyable     *      * @return a copy of this object     */    public Object copy(){       NumericAntd na = new NumericAntd(getAttr());      na.value = this.value;      na.splitPoint = this.splitPoint;      return na;    }	    /**     * Implements the splitData function.       * This procedure is to split the data into two bags according      * to the information gain of the numeric attribute value     * The maximum infoGain is also calculated.       *      * @param insts the data to be split     * @param defAcRt the default accuracy rate for data     * @param cl the class label to be predicted     * @return the array of data after split     */    public Instances[] splitData(Instances insts, double defAcRt, 				 double cl){	Instances data = insts;      int total=data.numInstances();// Total number of instances without       // missing value for att	          int split=1;                  // Current split position      int prev=0;                   // Previous split position      int finalSplit=split;         // Final split position      maxInfoGain = 0;      value = 0;		          double fstCover=0, sndCover=0, fstAccu=0, sndAccu=0;	          data.sort(att);      // Find the las instance without missing value       for(int x=0; x<data.numInstances(); x++){	Instance inst = data.instance(x);	if(inst.isMissing(att)){	  total = x;	  break;	}			sndCover += inst.weight();	if(Utils.eq(inst.classValue(), cl))

⌨️ 快捷键说明

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