Class AttributeWiseCDFNormalization<V extends elki.data.NumberVector>
- java.lang.Object
-
- elki.datasource.filter.normalization.columnwise.AttributeWiseCDFNormalization<V>
-
- 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. Haralickbut 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 classAttributeWiseCDFNormalization.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>distsStores the estimated distributionsprotected java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>>estimatorsStores the distribution estimatorsprotected elki.data.NumberVector.Factory<V>factoryNumber vector factory.private static elki.logging.LoggingLOGClass logger.
-
Constructor Summary
Constructors Constructor Description AttributeWiseCDFNormalization(java.util.List<? extends elki.math.statistics.distribution.estimator.DistributionEstimator<?>> estimators)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanconstantZero(java.util.List<V> column, AttributeWiseCDFNormalization.Adapter adapter)Test if an attribute is constant zero.elki.datasource.bundle.MultipleObjectsBundlefilter(elki.datasource.bundle.MultipleObjectsBundle objects)protected elki.math.statistics.distribution.DistributionfindBestFit(java.util.List<V> col, AttributeWiseCDFNormalization.Adapter adapter, int d, double[] test)Find the best fitting distribution.java.lang.StringtoString()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface elki.datasource.filter.normalization.Normalization
restore, transform
-
-
-
-
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.
-
-
Method Detail
-
filter
public elki.datasource.bundle.MultipleObjectsBundle filter(elki.datasource.bundle.MultipleObjectsBundle objects)
- Specified by:
filterin interfaceelki.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 tableadapter- Adapter for accessing the datad- Dimensiontest- 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- Columnadapter- Data accessor.- Returns:
trueif all values are zero
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-