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

📄 instances.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    for (int i = position; i < m_Attributes.size(); i++) {      Attribute current = (Attribute)m_Attributes.elementAt(i);      current.setIndex(current.index() - 1);    }    for (int i = 0; i < numInstances(); i++) {      instance(i).forceDeleteAttributeAt(position);     }  }  //=============================BEGIN EDIT sugato==========================  /**   * Deletes attribute at position classIndex    *    * @author Sugato Basu   */  public void deleteClassAttribute() {    freshAttributeInfo();    m_Attributes.removeElementAt(m_ClassIndex);    for (int i = m_ClassIndex; i < m_Attributes.size(); i++) {      Attribute current = (Attribute)m_Attributes.elementAt(i);      current.setIndex(current.index() - 1);    }    for (int i = 0; i < numInstances(); i++) {      instance(i).forceDeleteAttributeAt(m_ClassIndex);     }    m_ClassIndex = -1;  }//=============================END EDIT sugato==========================  /**   * Deletes all string attributes in the dataset. A deep copy of the attribute   * information is performed before an attribute is deleted.   *   * @exception IllegalArgumentException if string attribute couldn't be    * successfully deleted (probably because it is the class attribute).   */  public void deleteStringAttributes() {    int i = 0;    while (i < m_Attributes.size()) {      if (attribute(i).isString()) {	deleteAttributeAt(i);      } else {	i++;      }    }  }  /**   * Removes all instances with missing values for a particular   * attribute from the dataset.   *   * @param attIndex the attribute's index   */  public final void deleteWithMissing(int attIndex) {    FastVector newInstances = new FastVector(numInstances());    for (int i = 0; i < numInstances(); i++) {      if (!instance(i).isMissing(attIndex)) {	newInstances.addElement(instance(i));      }    }    m_Instances = newInstances;  }  /**   * Removes all instances with missing values for a particular   * attribute from the dataset.   *   * @param att the attribute   */  public final void deleteWithMissing(Attribute att) {    deleteWithMissing(att.index());  }  /**   * Removes all instances with a missing class value   * from the dataset.   *   * @exception UnassignedClassException if class is not set   */  public final void deleteWithMissingClass() {    if (m_ClassIndex < 0) {      throw new UnassignedClassException("Class index is negative (not set)!");    }    deleteWithMissing(m_ClassIndex);  }  /**   * Returns an enumeration of all the attributes.   *   * @return enumeration of all the attributes.   */  public Enumeration enumerateAttributes() {    return m_Attributes.elements(m_ClassIndex);  }  /**   * Returns an enumeration of all instances in the dataset.   *   * @return enumeration of all instances in the dataset   */  public final Enumeration enumerateInstances() {    return m_Instances.elements();  }  /**   * Checks if two headers are equivalent.   *   * @param dataset another dataset   * @return true if the header of the given dataset is equivalent    * to this header   */  public final boolean equalHeaders(Instances dataset){    // Check class and all attributes    if (m_ClassIndex != dataset.m_ClassIndex) {      return false;    }    if (m_Attributes.size() != dataset.m_Attributes.size()) {      return false;    }    for (int i = 0; i < m_Attributes.size(); i++) {      if (!(attribute(i).equals(dataset.attribute(i)))) {	return false;      }    }    return true;  }   /**   * Returns the first instance in the set.   *   * @return the first instance in the set   */  public final Instance firstInstance() {        return (Instance)m_Instances.firstElement();  }   /**   * Inserts an attribute at the given position (0 to    * numAttributes()) and sets all values to be missing.   * Shallow copies the attribute before it is inserted, and performs   * a deep copy of the existing attribute information.   *   * @param att the attribute to be inserted   * @param pos the attribute's position   * @exception IllegalArgumentException if the given index is out of range   */  public void insertAttributeAt(Attribute att, int position) {	     if ((position < 0) ||	(position > m_Attributes.size())) {      throw new IllegalArgumentException("Index out of range");    }    att = (Attribute)att.copy();    freshAttributeInfo();    att.setIndex(position);    m_Attributes.insertElementAt(att, position);    for (int i = position + 1; i < m_Attributes.size(); i++) {      Attribute current = (Attribute)m_Attributes.elementAt(i);      current.setIndex(current.index() + 1);    }    for (int i = 0; i < numInstances(); i++) {      instance(i).forceInsertAttributeAt(position);    }    if (m_ClassIndex >= position) {      m_ClassIndex++;    }  }  /**   * Returns the instance at the given position.   *   * @param index the instance's index   * @return the instance at the given position   */  public final Instance instance(int index) {    return (Instance)m_Instances.elementAt(index);  }  /**   * Returns the last instance in the set.   *   * @return the last instance in the set   */  public final Instance lastInstance() {        return (Instance)m_Instances.lastElement();  }  /**   * Returns the mean (mode) for a numeric (nominal) attribute as   * a floating-point value. Returns 0 if the attribute is neither nominal nor    * numeric. If all values are missing it returns zero.   *   * @param attIndex the attribute's index   * @return the mean or the mode   */  public final double meanOrMode(int attIndex) {    double result, found;    int [] counts;    if (attribute(attIndex).isNumeric()) {      result = found = 0;      for (int j = 0; j < numInstances(); j++) {	if (!instance(j).isMissing(attIndex)) {	  found += instance(j).weight();	  result += instance(j).weight()*instance(j).value(attIndex);	}      }      if (Utils.eq(found, 0)) {	return 0;      } else {	return result / found;      }    } else if (attribute(attIndex).isNominal()) {      counts = new int[attribute(attIndex).numValues()];      for (int j = 0; j < numInstances(); j++) {	if (!instance(j).isMissing(attIndex)) {	  counts[(int) instance(j).value(attIndex)] += instance(j).weight();	}      }      return (double)Utils.maxIndex(counts);    } else {      return 0;    }  }  /**   * Returns the mean (mode) for a numeric (nominal) attribute as a   * floating-point value.  Returns 0 if the attribute is neither   * nominal nor numeric.  If all values are missing it returns zero.   *   * @param att the attribute   * @return the mean or the mode    */  public final double meanOrMode(Attribute att) {    return meanOrMode(att.index());  }  /**   * Returns the number of attributes.   *   * @return the number of attributes as an integer   */  public final int numAttributes() {    return m_Attributes.size();  }  /**   * Returns the number of class labels.   *   * @return the number of class labels as an integer if the class    * attribute is nominal, 1 otherwise.   * @exception UnassignedClassException if the class is not set   */  public final int numClasses() {        if (m_ClassIndex < 0) {      throw new UnassignedClassException("Class index is negative (not set)!");    }    if (!classAttribute().isNominal()) {      return 1;    } else {      return classAttribute().numValues();    }  }  /**   * Returns the number of distinct values of a given attribute.   * Returns the number of instances if the attribute is a   * string attribute. The value 'missing' is not counted.   *   * @param attIndex the attribute   * @return the number of distinct values of a given attribute   */  public final int numDistinctValues(int attIndex) {    if (attribute(attIndex).isNumeric()) {      double [] attVals = attributeToDoubleArray(attIndex);      int [] sorted = Utils.sort(attVals);      double prev = 0;      int counter = 0;      for (int i = 0; i < sorted.length; i++) {	Instance current = instance(sorted[i]);	if (current.isMissing(attIndex)) {	  break;	}	if ((i == 0) || 	    Utils.gr(current.value(attIndex), prev)) {	  prev = current.value(attIndex);	  counter++;	}      }      return counter;    } else {      return attribute(attIndex).numValues();    }  }  /**   * Returns the number of distinct values of a given attribute.   * Returns the number of instances if the attribute is a   * string attribute. The value 'missing' is not counted.   *   * @param att the attribute   * @return the number of distinct values of a given attribute   */  public final int numDistinctValues(Attribute att) {    return numDistinctValues(att.index());  }    /**   * Returns the number of instances in the dataset.   *   * @return the number of instances in the dataset as an integer   */  public final int numInstances() {    return m_Instances.size();  }  /**   * Shuffles the instances in the set so that they are ordered    * randomly.   *   * @param random a random number generator   */  public final void randomize(Random random) {    for (int j = numInstances() - 1; j > 0; j--)      swap(j, random.nextInt(j+1));  }  /**   * Reads a single instance from the reader and appends it   * to the dataset.  Automatically expands the dataset if it   * is not large enough to hold the instance. This method does   * not check for carriage return at the end of the line.   *   * @param reader the reader    * @return false if end of file has been reached   * @exception IOException if the information is not read    * successfully   */   public final boolean readInstance(Reader reader)        throws IOException {    StreamTokenizer tokenizer = new StreamTokenizer(reader);        initTokenizer(tokenizer);    return getInstance(tokenizer, false);  }      /**   * Returns the relation's name.   *   * @return the relation's name as a string   */  public final String relationName() {    return m_RelationName;  }  /**   * Renames an attribute. This change only affects this   * dataset.   *   * @param att the attribute's index   * @param name the new name   */  public final void renameAttribute(int att, String name) {    Attribute newAtt = attribute(att).copy(name);    FastVector newVec = new FastVector(numAttributes());    for (int i = 0; i < numAttributes(); i++) {      if (i == att) {	newVec.addElement(newAtt);      } else {	newVec.addElement(attribute(i));      }    }    m_Attributes = newVec;  }  /**   * Renames an attribute. This change only affects this   * dataset.   *   * @param att the attribute   * @param name the new name   */  public final void renameAttribute(Attribute att, String name) {    renameAttribute(att.index(), name);  }  /**   * Renames the value of a nominal (or string) attribute value. This   * change only affects this dataset.   *   * @param att the attribute's index   * @param val the value's index   * @param name the new name    */  public final void renameAttributeValue(int att, int val, String name) {    Attribute newAtt = (Attribute)attribute(att).copy();    FastVector newVec = new FastVector(numAttributes());    newAtt.setValue(val, name);    for (int i = 0; i < numAttributes(); i++) {      if (i == att) {	newVec.addElement(newAtt);      } else {	newVec.addElement(attribute(i));      }    }    m_Attributes = newVec;  }  /**   * Renames the value of a nominal (or string) attribute value. This   * change only affects this dataset.   *   * @param att the attribute   * @param val the value   * @param name the new name   */  public final void renameAttributeValue(Attribute att, String val,                                          String name) {

⌨️ 快捷键说明

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