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

📄 attribute.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
   * Tests if the attribute is a string.   *   * @return true if the attribute is a string   */  public final boolean isString() {    return (m_Type == STRING);  }  /**   * Tests if the attribute is a date type.   *   * @return true if the attribute is a date type   */  public final boolean isDate() {    return (m_Type == DATE);  }  /**   * Returns the attribute's name.   *   * @return the attribute's name as a string   */  public final String name() {    return m_Name;  }    /**   * Returns the number of attribute values. Returns 0 for numeric attributes.   *   * @return the number of attribute values   */  public final int numValues() {    if (!isNominal() && !isString()) {      return 0;    } else {      return m_Values.size();    }  }  /**   * Returns a description of this attribute in ARFF format. Quotes   * strings if they contain whitespace characters, or if they   * are a question mark.   *   * @return a description of this attribute as a string   */  public final String toString() {        StringBuffer text = new StringBuffer();        text.append("@attribute " + Utils.quote(m_Name) + " ");    switch (m_Type) {    case NOMINAL:      text.append('{');      Enumeration enum = enumerateValues();      while (enum.hasMoreElements()) {	text.append(Utils.quote((String) enum.nextElement()));	if (enum.hasMoreElements())	  text.append(',');      }      text.append('}');      break;    case NUMERIC:      text.append("numeric");      break;    case STRING:      text.append("string");      break;    case DATE:      text.append("date ").append(Utils.quote(m_DateFormat.toPattern()));      break;    default:      text.append("UNKNOWN");      break;    }    return text.toString();  }  /**   * Returns the attribute's type as an integer.   *   * @return 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 date attributes with a particular index.   *   * @param attributeName the name for the attribute   * @param dateFormat a string suitable for use with   * SimpleDateFormatter for parsing dates.  Null for a default format   * string.   * @param index the attribute's index   */  Attribute(String attributeName, String dateFormat, 	    int index) {    this(attributeName, dateFormat);    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;    copy.m_DateFormat = m_DateFormat;    copy.m_Type = m_Type;    copy.m_Values = m_Values;    copy.m_Hashtable = m_Hashtable;    copy.setMetadata(m_Metadata);     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) {        switch (m_Type) {    case NOMINAL:    case STRING:      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));      break;    default:      throw new IllegalArgumentException("Can only set values for nominal"                                         + " or string attributes!");    }  }  public String formatDate(double date) {    switch (m_Type) {    case DATE:      return m_DateFormat.format(new Date((long)date));    default:      throw new IllegalArgumentException("Can only format date values for date"                                         + " attributes!");    }  }  public double parseDate(String string) throws ParseException {    switch (m_Type) {    case DATE:      long time = m_DateFormat.parse(string).getTime();      // TODO put in a safety check here if we can't store the value in a double.      return (double)time;    default:      throw new IllegalArgumentException("Can only parse date values for date"                                         + " attributes!");    }  }  /**   * Returns the properties supplied for this attribute.   *   * @return metadata for this attribute   */    public final ProtectedProperties getMetadata() {    return m_Metadata;  }  /**   * Returns the ordering of the attribute. One of the following:   *    * ORDERING_SYMBOLIC - attribute values should be treated as symbols.   * ORDERING_ORDERED  - attribute values have a global ordering.   * ORDERING_MODULO   - attribute values have an ordering which wraps.   *   * @return the ordering type of the attribute   */  public final int ordering() {    return m_Ordering;  }  /**   * Returns whether the attribute values are equally spaced.   *   * @return whether the attribute is regular or not   */  public final boolean isRegular() {    return m_IsRegular;  }

⌨️ 快捷键说明

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