Class ClassicMultidimensionalScalingTransform<I,​O extends elki.data.NumberVector>

  • Type Parameters:
    I - Input data type
    O - Output vector type
    All Implemented Interfaces:
    elki.datasource.filter.ObjectFilter

    @Alias("mds")
    public class ClassicMultidimensionalScalingTransform<I,​O extends elki.data.NumberVector>
    extends java.lang.Object
    implements elki.datasource.filter.ObjectFilter
    Rescale the data set using multidimensional scaling, MDS. Note: the current implementation is rather expensive, both memory- and runtime wise. Don't use for large data sets! Instead, have a look at FastMultidimensionalScalingTransform which uses power iterations instead.
    Since:
    0.6.0
    Author:
    Erich Schubert
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) elki.distance.PrimitiveDistance<? super I> dist
      Distance function to use.
      (package private) elki.data.NumberVector.Factory<O> factory
      Vector factory.
      private static elki.logging.Logging LOG
      Class logger.
      (package private) int tdim
      Target dimensionality
    • Constructor Summary

      Constructors 
      Constructor Description
      ClassicMultidimensionalScalingTransform​(int tdim, elki.distance.PrimitiveDistance<? super I> dist, elki.data.NumberVector.Factory<O> factory)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected static <I> double[][] computeSquaredDistanceMatrix​(java.util.List<I> col, elki.distance.PrimitiveDistance<? super I> dist)
      Compute the squared distance matrix.
      static void doubleCenterSymmetric​(double[][] m)
      Double-center the given matrix (only upper triangle is used).
      elki.datasource.bundle.MultipleObjectsBundle filter​(elki.datasource.bundle.MultipleObjectsBundle objects)  
      • Methods inherited from class java.lang.Object

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

      • LOG

        private static final elki.logging.Logging LOG
        Class logger.
      • dist

        elki.distance.PrimitiveDistance<? super I> dist
        Distance function to use.
      • tdim

        int tdim
        Target dimensionality
      • factory

        elki.data.NumberVector.Factory<O extends elki.data.NumberVector> factory
        Vector factory.
    • Constructor Detail

      • ClassicMultidimensionalScalingTransform

        public ClassicMultidimensionalScalingTransform​(int tdim,
                                                       elki.distance.PrimitiveDistance<? super I> dist,
                                                       elki.data.NumberVector.Factory<O> factory)
        Constructor.
        Parameters:
        tdim - Target dimensionality.
        dist - Distance function to use.
        factory - Vector factory.
    • Method Detail

      • filter

        public elki.datasource.bundle.MultipleObjectsBundle filter​(elki.datasource.bundle.MultipleObjectsBundle objects)
        Specified by:
        filter in interface elki.datasource.filter.ObjectFilter
      • computeSquaredDistanceMatrix

        protected static <I> double[][] computeSquaredDistanceMatrix​(java.util.List<I> col,
                                                                     elki.distance.PrimitiveDistance<? super I> dist)
        Compute the squared distance matrix.
        Parameters:
        col - Input data
        dist - Distance function
        Returns:
        Distance matrix.
      • doubleCenterSymmetric

        public static void doubleCenterSymmetric​(double[][] m)
        Double-center the given matrix (only upper triangle is used). For improved numerical precision, we perform incremental updates to the mean values, instead of computing a large sum and then performing division.
        Parameters:
        m - Matrix to double-center.