Package elki.datasource.filter.transform
Class ClassicMultidimensionalScalingTransform<I,O extends NumberVector>
- java.lang.Object
-
- elki.datasource.filter.transform.ClassicMultidimensionalScalingTransform<I,O>
-
- Type Parameters:
I
- Input data typeO
- 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 atFastMultidimensionalScalingTransform
which uses power iterations instead.- Since:
- 0.6.0
- Author:
- Erich Schubert
-
-
Field Summary
Fields Modifier and Type Field Description (package private) PrimitiveDistance<? super I>
dist
Distance function to use.(package private) NumberVector.Factory<O>
factory
Vector factory.private static Logging
LOG
Class logger.(package private) int
tdim
Target dimensionality
-
Constructor Summary
Constructors Constructor Description ClassicMultidimensionalScalingTransform(int tdim, PrimitiveDistance<? super I> dist, 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, PrimitiveDistance<? super I> dist)
Compute the squared distance matrix.static void
doubleCenterSymmetric(double[][] m)
Double-center the given matrix (only upper triangle is used).MultipleObjectsBundle
filter(MultipleObjectsBundle objects)
Filter a set of object packages.
-
-
-
Field Detail
-
LOG
private static final Logging LOG
Class logger.
-
dist
PrimitiveDistance<? super I> dist
Distance function to use.
-
tdim
int tdim
Target dimensionality
-
factory
NumberVector.Factory<O extends NumberVector> factory
Vector factory.
-
-
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
-
filter
public MultipleObjectsBundle filter(MultipleObjectsBundle objects)
Description copied from interface:ObjectFilter
Filter a set of object packages.- Specified by:
filter
in interfaceObjectFilter
- Parameters:
objects
- Object to filter- Returns:
- Filtered objects
-
computeSquaredDistanceMatrix
protected static <I> double[][] computeSquaredDistanceMatrix(java.util.List<I> col, PrimitiveDistance<? super I> dist)
Compute the squared distance matrix.- Parameters:
col
- Input datadist
- 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.
-
-