Class AttributeWiseCDFNormalization<V extends elki.data.NumberVector>

  • Type Parameters:
    V - vector type
    All Implemented Interfaces:
    Normalization<V>, elki.datasource.filter.ObjectFilter
    Direct Known Subclasses:
    AttributeWiseBetaNormalization

    public class AttributeWiseCDFNormalization<V extends elki.data.NumberVector>
    extends java.lang.Object
    implements Normalization<V>
    Class to perform and undo a normalization on real vectors by estimating the distribution of values along each dimension independently, then rescaling objects to the cumulative density function (CDF) value at the original coordinate.

    This process is for example also mentioned in section 3.4 of

    Effects of Feature Normalization on Image Retrieval
    S. Aksoy, R. M. Haralick

    but they do not detail how to obtain an appropriate function `F`.

    Since:
    0.6.0
    Author:
    Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  AttributeWiseCDFNormalization.Par<V extends elki.data.NumberVector>
      Parameterization class.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.List<elki.math.statistics.distribution.Distribution> dists
      Stores the estimated distributions
      protected java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>> estimators
      Stores the distribution estimators
      protected elki.data.NumberVector.Factory<V> factory
      Number vector factory.
      private static elki.logging.Logging LOG
      Class logger.
    • Constructor Summary

      Constructors 
      Constructor Description
      AttributeWiseCDFNormalization​(java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>> estimators)
      Constructor.
    • Field Detail

      • LOG

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

        protected java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>> estimators
        Stores the distribution estimators
      • dists

        protected java.util.List<elki.math.statistics.distribution.Distribution> dists
        Stores the estimated distributions
      • factory

        protected elki.data.NumberVector.Factory<V extends elki.data.NumberVector> factory
        Number vector factory.
    • Constructor Detail

      • AttributeWiseCDFNormalization

        public AttributeWiseCDFNormalization​(java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>> estimators)
        Constructor.
        Parameters:
        estimators - Distribution estimators
    • Method Detail

      • filter

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

        protected elki.math.statistics.distribution.Distribution findBestFit​(java.util.List<V> col,
                                                                             AttributeWiseCDFNormalization.Adapter adapter,
                                                                             int d,
                                                                             double[] test)
        Find the best fitting distribution.
        Parameters:
        col - Column of table
        adapter - Adapter for accessing the data
        d - Dimension
        test - Scatch space for testing goodness of fit
        Returns:
        Best fit distribution
      • constantZero

        protected boolean constantZero​(java.util.List<V> column,
                                       AttributeWiseCDFNormalization.Adapter adapter)
        Test if an attribute is constant zero.
        Parameters:
        column - Column
        adapter - Data accessor.
        Returns:
        true if all values are zero
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object