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

📄 c45saver.java

📁 矩阵的QR分解算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
              }              setFileExtension(".names");              m_incrementalCounter = 0;              resetStructure();              outW = null;              resetWriter();          }      }  }    /**    * Writes a Batch of instances   * @throws IOException throws IOException if saving in batch mode is not possible   */  public void writeBatch() throws IOException {            Instances instances = getInstances();            if(instances == null)          throw new IOException("No instances to save");      if(instances.classIndex() == -1){          instances.setClassIndex(instances.numAttributes()-1);          System.err.println("No class specified. Last attribute is used as class attribute.");      }      if(instances.attribute(instances.classIndex()).isNumeric())          throw new IOException("To save in C4.5 format the class attribute cannot be numeric.");      if(getRetrieval() == INCREMENTAL)          throw new IOException("Batch and incremental saving cannot be mixed.");            setRetrieval(BATCH);      if(retrieveFile() == null || getWriter() == null){          throw new IOException("C4.5 format requires two files. Therefore no output to standard out can be generated.\nPlease specifiy output files using the -o option.");      }      setWriteMode(WRITE);      //print names file      setFileExtension(".names");      PrintWriter outW = new PrintWriter(getWriter());      for (int i = 0; i < instances.attribute(instances.classIndex()).numValues(); i++) {        outW.write(instances.attribute(instances.classIndex()).value(i));        if (i < instances.attribute(instances.classIndex()).numValues()-1) {            outW.write(",");        } else {            outW.write(".\n");	}      }      for (int i = 0; i < instances.numAttributes(); i++) {        if (i != instances.classIndex()) {            outW.write(instances.attribute(i).name()+": ");            if (instances.attribute(i).isNumeric() || instances.attribute(i).isDate()) {                outW.write("continuous.\n");            } else {                Attribute temp = instances.attribute(i);		for (int j = 0; j < temp.numValues(); j++) {                    outW.write(temp.value(j));		    if (j < temp.numValues()-1) {			outW.write(",");		    } else {			outW.write(".\n");		    }		 }             }        }      }      outW.flush();      outW.close();            //print data file      String out = retrieveFile().getAbsolutePath();      setFileExtension(".data");      out = out.substring(0, out.lastIndexOf('.')) + getFileExtension();      File namesFile = new File(out);      try{        setFile(namesFile);      } catch(Exception ex){          throw new IOException("Cannot create data file, only names file created (Reason: " + ex.toString() + ").");      }      if(retrieveFile() == null || getWriter() == null){          throw new IOException("Cannot create data file, only names file created.");      }      outW = new PrintWriter(getWriter());      // print data file      for (int i = 0; i < instances.numInstances(); i++) {	Instance temp = instances.instance(i);        for(int j = 0; j < temp.numAttributes(); j++){            if(j != instances.classIndex()){                if (temp.isMissing(j)) {		      outW.write("?,");		    } else if (instances.attribute(j).isNominal() || 			       instances.attribute(j).isString()) {		      outW.write(instances.attribute(j).value((int)temp.value(j))+",");		    } else {		      outW.write(""+temp.value(j)+",");		    }            }        }        // write the class value        if (temp.isMissing(instances.classIndex())) {            outW.write("?");        }         else {            outW.write(instances.attribute(instances.classIndex()).value((int)temp.value(instances.classIndex())));        }        outW.write("\n");      }      outW.flush();      outW.close();      setFileExtension(".names");      setWriteMode(WAIT);      outW = null;      resetWriter();      setWriteMode(CANCEL);  }      /**   * Returns an enumeration describing the available options.   *   * @return an enumeration of all the available options.   */  public Enumeration listOptions() {    FastVector result = new FastVector();    Enumeration en = super.listOptions();    while (en.hasMoreElements())      result.addElement(en.nextElement());    result.addElement(new Option(	"The class index", 	"c", 1, "-c <the class index>"));        return result.elements();  }   /**   * Parses a given list of options. <p/>   *   <!-- options-start -->   * Valid options are: <p/>   *    * <pre> -i &lt;the input file&gt;   * The input file</pre>   *    * <pre> -o &lt;the output file&gt;   * The output file</pre>   *    * <pre> -c &lt;the class index&gt;   * The class index</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 {        String outputString = Utils.getOption('o', options);    String inputString = Utils.getOption('i', options);    String indexString = Utils.getOption('c', options);        ArffLoader loader = new ArffLoader();        resetOptions();    // parse index    int index = -1;    if (indexString.length() != 0){      if(indexString.equals("first"))	index = 0;      else {	if (indexString.equals("last"))	  index = -1;	else	  index = Integer.parseInt(indexString);      }    }        if (inputString.length() != 0){      try {	File input = new File(inputString);	loader.setFile(input);	Instances inst = loader.getDataSet();	if (index == -1)	  inst.setClassIndex(inst.numAttributes() - 1);	else	  inst.setClassIndex(index);	setInstances(inst);      } catch(Exception ex){	throw new IOException("No data set loaded. Data set has to be arff format (Reason: " + ex.toString() + ").");      }    }    else      throw new IOException("No data set to save.");    if (outputString.length() != 0){       //add appropriate file extension      if (!outputString.endsWith(getFileExtension())){	if (outputString.lastIndexOf('.') != -1)	  outputString = (outputString.substring(0,outputString.lastIndexOf('.'))) + getFileExtension();	else	  outputString = outputString + getFileExtension();      }      try {	File output = new File(outputString);	setFile(output);      } catch(Exception ex){	throw new IOException("Cannot create output file.");      }    }    if (index == -1)      index = getInstances().numAttributes() - 1;    getInstances().setClassIndex(index);  }  /**   * Gets the current settings of the C45Saver object.   *   * @return an array of strings suitable for passing to setOptions   */  public String [] getOptions() {    String [] options = new String [10];    int current = 0;    if(retrieveFile() != null){        options[current++] = "-o"; options[current++] = "" + retrieveFile();    }    else{        options[current++] = "-o"; options[current++] = "";    }    if(getInstances() != null){        options[current++] = "-i"; options[current++] = "" + getInstances().relationName();        options[current++] = "-c"; options[current++] = "" + getInstances().classIndex();    }    else{        options[current++] = "-i"; options[current++] = "";        options[current++] = "-c"; options[current++] = "";    }    while (current < options.length) {      options[current++] = "";    }    return options;  }  /**   * Main method.   *   * @param args should contain the options of a Saver.   */  public static void main(String[] args) {    runFileSaver(new C45Saver(), args);  }}

⌨️ 快捷键说明

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