Class Instance

  • All Implemented Interfaces:
    AlphabetCarrying, java.io.Serializable, java.lang.Cloneable

    public class Instance
    extends java.lang.Object
    implements java.io.Serializable, AlphabetCarrying, java.lang.Cloneable
    A machine learning "example" to be used in training, testing or performance of various machine learning algorithms.

    An instance contains four generic fields of predefined name: "data", "target", "name", and "source". "Data" holds the data represented `by the instance, "target" is often a label associated with the instance, "name" is a short identifying name for the instance (such as a filename), and "source" is human-readable sourceinformation, (such as the original text).

    Each field has no predefined type, and may change type as the instance is processed. For example, the data field may start off being a string that represents a file name and then be processed by a Pipe into a CharSequence representing the contents of the file, and eventually to a feature vector holding indices into an Alphabet holding words found in the file. It is up to each pipe which fields in the Instance it modifies; the most common case is that the pipe modifies the data field.

    Generally speaking, there are two modes of operation for Instances. (1) An instance gets created and passed through a Pipe, and the resulting data/target/name/source fields are used. This is generally done for training instances. (2) An instance gets created with raw values in its slots, then different users of the instance call newPipedCopy() with their respective different pipes. This might be done for test instances at "performance" time.

    Rather than store an Alphabet in the Instance, we obtain it through the Pipe instance variable, because the Pipe also indicates where the data came from and how to interpret the Alphabet.

    Instances can be made immutable if locked. Although unlocked Instances are mutable, typically the only code that changes the values in the four slots is inside Pipes.

    Note that constructing an instance with a pipe argument means "Construct the instance and then run it through the pipe". InstanceList uses this method when adding instances through a pipeInputIterator.

    Author:
    Andrew McCallum mccallum@cs.umass.edu
    See Also:
    Pipe, Alphabet, InstanceList, Serialized Form
    • Field Detail

      • data

        protected java.lang.Object data
      • target

        protected java.lang.Object target
      • name

        protected java.lang.Object name
      • source

        protected java.lang.Object source
    • Constructor Detail

      • Instance

        public Instance​(java.lang.Object data,
                        java.lang.Object target,
                        java.lang.Object name,
                        java.lang.Object source)
        In certain unusual circumstances, you might want to create an Instance without sending it through a pipe.
    • Method Detail

      • getData

        public java.lang.Object getData()
      • getTarget

        public java.lang.Object getTarget()
      • getName

        public java.lang.Object getName()
      • getSource

        public java.lang.Object getSource()
      • getDataAlphabet

        public Alphabet getDataAlphabet()
      • getTargetAlphabet

        public Alphabet getTargetAlphabet()
      • isLocked

        public boolean isLocked()
      • lock

        public void lock()
      • unLock

        public void unLock()
      • getLabeling

        public Labeling getLabeling()
      • setData

        public void setData​(java.lang.Object d)
      • setTarget

        public void setTarget​(java.lang.Object t)
      • setLabeling

        public void setLabeling​(Labeling l)
      • setName

        public void setName​(java.lang.Object n)
      • setSource

        public void setSource​(java.lang.Object s)
      • clearSource

        public void clearSource()
      • shallowCopy

        public Instance shallowCopy()
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • setProperty

        public void setProperty​(java.lang.String key,
                                java.lang.Object value)
      • setNumericProperty

        public void setNumericProperty​(java.lang.String key,
                                       double value)
      • getProperties

        @Deprecated
        public PropertyList getProperties()
        Deprecated.
      • setPropertyList

        @Deprecated
        public void setPropertyList​(PropertyList p)
        Deprecated.
      • getProperty

        public java.lang.Object getProperty​(java.lang.String key)
      • getNumericProperty

        public double getNumericProperty​(java.lang.String key)
      • hasProperty

        public boolean hasProperty​(java.lang.String key)