Class SparseVector

  • All Implemented Interfaces:
    java.io.Serializable

    public class SparseVector
    extends java.lang.Object
    implements java.io.Serializable
    An implementation of a sparse vector.

    Memory is only allocated for dimensions that have non-zero values.

    Author:
    Thomas Down, Matthew Pocock
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  SparseVector.NormalizingKernel
      A version of the standard dot-product kernel that scales each column independently.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static SVMKernel kernel  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double get​(int dim)
      Retrieve the value at dimension dim.
      int getDimAtIndex​(int indx)
      Retrieve the dimension at a specific index.
      double getValueAtIndex​(int indx)
      Retrieve the value at a specific index.
      int maxIndex()  
      static SparseVector normalLengthVector​(SparseVector v, double length)  
      void put​(int dim, double value)
      Set the value at a particular dimension.
      int size()
      The number of used dimensions.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • kernel

        public static final SVMKernel kernel
    • Constructor Detail

      • SparseVector

        public SparseVector()
      • SparseVector

        public SparseVector​(int capacity)
    • Method Detail

      • size

        public int size()
        The number of used dimensions.

        This is the total number of non-zero dimensions. It is not equal to the number of the highest indexed dimension.

        Returns:
        the number of non-zero dimensions
      • put

        public void put​(int dim,
                        double value)
        Set the value at a particular dimension.

        This silently handles the case when previously there was no value at dim. It does not contract the sparse array if you set a value to zero.

        Parameters:
        dim - the dimension to alter
        value - the new value
      • get

        public double get​(int dim)
        Retrieve the value at dimension dim.
        Parameters:
        dim - the dimension to retrieve a value for
        Returns:
        the value at that dimension
      • getDimAtIndex

        public int getDimAtIndex​(int indx)
        Retrieve the dimension at a specific index.

        E.g., if the sparse vector had dimensions 5, 11, 12, 155 set to non-zero values then sv.getDimAtIndex(2) would return 12.

        Parameters:
        indx - the index
        Returns:
        the dimension stoored at that index
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - if index >= size.
      • getValueAtIndex

        public double getValueAtIndex​(int indx)
        Retrieve the value at a specific index.

        E.g., if the sparse vector contained the data 5->0.1, 11->100, 12->8.5, 155->-10 then sv.geValueAtIndex(2) would return 8.5.

        Parameters:
        indx - the index
        Returns:
        the value stoored at that index
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - if index >= size.
      • maxIndex

        public int maxIndex()