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

📄 attribute.java

📁 :<<数据挖掘--实用机器学习技术及java实现>>一书的配套源程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      } else {	text.append("string");      }    }    return text.toString();  }  /**   * Returns the attribute's type as an integer.   *   * @returns the attribute's type.   */  public final int type() {    return m_Type;  }  /**   * Returns a value of a nominal or string attribute.    * Returns an empty string if the attribute is neither   * nominal nor a string attribute.   *   * @param valIndex the value's index   * @return the attribute's value as a string   */  public final String value(int valIndex) {        if (!isNominal() && !isString()) {      return "";    } else {      Object val = m_Values.elementAt(valIndex);            // If we're storing strings compressed, uncompress it.      if (val instanceof SerializedObject) {        val = ((SerializedObject)val).getObject();      }      return (String) val;    }  }  /**   * Constructor for a numeric attribute with a particular index.   *   * @param attributeName the name for the attribute   * @param index the attribute's index   */  Attribute(String attributeName, int index) {    this(attributeName);    m_Index = index;  }  /**   * Constructor for nominal attributes and string attributes with   * a particular index.   * If a null vector of attribute values is passed to the method,   * the attribute is assumed to be a string.   *   * @param attributeName the name for the attribute   * @param attributeValues a vector of strings denoting the attribute values.   * Null if the attribute is a string attribute.   * @param index the attribute's index   */  Attribute(String attributeName, FastVector attributeValues, 	    int index) {    this(attributeName, attributeValues);    m_Index = index;  }  /**   * Adds a string value to the list of valid strings for attributes   * of type STRING and returns the index of the string.   *   * @param value The string value to add   * @return the index assigned to the string, or -1 if the attribute is not   * of type Attribute.STRING    */  public int addStringValue(String value) {    if (!isString()) {      return -1;    }    Object store = value;    if (value.length() > STRING_COMPRESS_THRESHOLD) {      try {        store = new SerializedObject(value, true);      } catch (Exception ex) {        System.err.println("Couldn't compress string attribute value -"                           + " storing uncompressed.");      }    }    Integer index = (Integer)m_Hashtable.get(store);    if (index != null) {      return index.intValue();    } else {      int intIndex = m_Values.size();      m_Values.addElement(store);      m_Hashtable.put(store, new Integer(intIndex));      return intIndex;    }  }  /**   * Adds a string value to the list of valid strings for attributes   * of type STRING and returns the index of the string. This method is   * more efficient than addStringValue(String) for long strings.   *   * @param src The Attribute containing the string value to add.   * @param int index the index of the string value in the source attribute.   * @return the index assigned to the string, or -1 if the attribute is not   * of type Attribute.STRING    */  public int addStringValue(Attribute src, int index) {    if (!isString()) {      return -1;    }    Object store = src.m_Values.elementAt(index);    Integer oldIndex = (Integer)m_Hashtable.get(store);    if (oldIndex != null) {      return oldIndex.intValue();    } else {      int intIndex = m_Values.size();      m_Values.addElement(store);      m_Hashtable.put(store, new Integer(intIndex));      return intIndex;    }  }  /**   * Adds an attribute value. Creates a fresh list of attribute   * values before adding it.   *   * @param value the attribute value   */  final void addValue(String value) {    m_Values = (FastVector)m_Values.copy();    m_Hashtable = (Hashtable)m_Hashtable.clone();    forceAddValue(value);  }  /**   * Produces a shallow copy of this attribute with a new name.   *   * @param newName the name of the new attribute   * @return a copy of this attribute with the same index   */  final Attribute copy(String newName) {    Attribute copy = new Attribute(newName);    copy.m_Index = m_Index;    if (!isNominal() && !isString())      return copy;    copy.m_Type = m_Type;    copy.m_Values = m_Values;    copy.m_Hashtable = m_Hashtable;     return copy;  }  /**   * Removes a value of a nominal or string attribute. Creates a    * fresh list of attribute values before removing it.   *   * @param index the value's index   * @exception IllegalArgumentException if the attribute is not nominal   */  final void delete(int index) {        if (!isNominal() && !isString())       throw new IllegalArgumentException("Can only remove value of" +                                         "nominal or string attribute!");    else {      m_Values = (FastVector)m_Values.copy();      m_Values.removeElementAt(index);      Hashtable hash = new Hashtable(m_Hashtable.size());      Enumeration enum = m_Hashtable.keys();      while (enum.hasMoreElements()) {	Object string = enum.nextElement();	Integer valIndexObject = (Integer)m_Hashtable.get(string);	int valIndex = valIndexObject.intValue();	if (valIndex > index) {	  hash.put(string, new Integer(valIndex - 1));	} else if (valIndex < index) {	  hash.put(string, valIndexObject);	}      }      m_Hashtable = hash;    }  }  /**   * Adds an attribute value.   *   * @param value the attribute value   */  final void forceAddValue(String value) {    Object store = value;    if (value.length() > STRING_COMPRESS_THRESHOLD) {      try {        store = new SerializedObject(value, true);      } catch (Exception ex) {        System.err.println("Couldn't compress string attribute value -"                           + " storing uncompressed.");      }    }    m_Values.addElement(store);    m_Hashtable.put(store, new Integer(m_Values.size() - 1));  }  /**   * Sets the index of this attribute.   *   * @param the index of this attribute   */  final void setIndex(int index) {    m_Index = index;  }  /**   * Sets a value of a nominal attribute or string attribute.   * Creates a fresh list of attribute values before it is set.   *   * @param index the value's index   * @param string the value   * @exception IllegalArgumentException if the attribute is not nominal or    * string.   */  final void setValue(int index, String string) {    if (!isNominal() && !isString()) {      throw new IllegalArgumentException("Can only set value of nominal"+                                         "or string attribute!");    } else {      m_Values = (FastVector)m_Values.copy();      m_Hashtable = (Hashtable)m_Hashtable.clone();      Object store = string;      if (string.length() > STRING_COMPRESS_THRESHOLD) {        try {          store = new SerializedObject(string, true);        } catch (Exception ex) {          System.err.println("Couldn't compress string attribute value -"                             + " storing uncompressed.");        }      }      m_Hashtable.remove(m_Values.elementAt(index));      m_Values.setElementAt(store, index);      m_Hashtable.put(store, new Integer(index));    }  }  /**   * Simple main method for testing this class.   */  public static void main(String[] ops) {    try {            // Create numeric attributes "length" and "weight"      Attribute length = new Attribute("length");      Attribute weight = new Attribute("weight");            // Create vector to hold nominal values "first", "second", "third"       FastVector my_nominal_values = new FastVector(3);       my_nominal_values.addElement("first");       my_nominal_values.addElement("second");       my_nominal_values.addElement("third");             // Create nominal attribute "position"       Attribute position = new Attribute("position", my_nominal_values);      // Print the name of "position"      System.out.println("Name of \"position\": " + position.name());      // Print the values of "position"      Enumeration attValues = position.enumerateValues();      while (attValues.hasMoreElements()) {	String string = (String)attValues.nextElement();	System.out.println("Value of \"position\": " + string);      }      // Shallow copy attribute "position"      Attribute copy = (Attribute) position.copy();      // Test if attributes are the same      System.out.println("Copy is the same as original: " + copy.equals(position));      // Print index of attribute "weight" (should be unset: -1)      System.out.println("Index of attribute \"weight\" (should be -1): " + 			 weight.index());      // Print index of value "first" of attribute "position"      System.out.println("Index of value \"first\" of \"position\" (should be 0): " +			 position.indexOfValue("first"));      // Tests type of attribute "position"      System.out.println("\"position\" is numeric: " + position.isNumeric());      System.out.println("\"position\" is nominal: " + position.isNominal());      System.out.println("\"position\" is string: " + position.isString());      // Prints name of attribute "position"      System.out.println("Name of \"position\": " + position.name());          // Prints number of values of attribute "position"      System.out.println("Number of values for \"position\": " + position.numValues());      // Prints the values (againg)      for (int i = 0; i < position.numValues(); i++) {	System.out.println("Value " + i + ": " + position.value(i));      }      // Prints the attribute "position" in ARFF format      System.out.println(position);      // Checks type of attribute "position" using constants      switch (position.type()) {      case Attribute.NUMERIC:	System.out.println("\"position\" is numeric");	break;      case Attribute.NOMINAL:	System.out.println("\"position\" is nominal");	break;      case Attribute.STRING:	System.out.println("\"position\" is string");	break;      default:	System.out.println("\"position\" has unknown type");      }    } catch (Exception e) {      e.printStackTrace();    }  }}  

⌨️ 快捷键说明

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