Class ClassicMultidimensionalScalingTransform<I,​O extends NumberVector>

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

    @Alias("mds")
    public class ClassicMultidimensionalScalingTransform<I,​O extends NumberVector>
    extends java.lang.Object
    implements 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
    • Constructor Detail

      • ClassicMultidimensionalScalingTransform

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

      • computeSquaredDistanceMatrix

        protected static <I> double[][] computeSquaredDistanceMatrix​(java.util.List<I> col,
                                                                     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.