Class AttributeWiseCDFNormalization<V extends NumberVector>
- java.lang.Object
-
- elki.datasource.filter.normalization.columnwise.AttributeWiseCDFNormalization<V>
-
- Type Parameters:
V- vector type
- All Implemented Interfaces:
Normalization<V>,ObjectFilter
- Direct Known Subclasses:
AttributeWiseBetaNormalization
public class AttributeWiseCDFNormalization<V extends 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 NumberVector>Parameterization class.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Distribution>distsStores the estimated distributionsprotected java.util.List<? extends DistributionEstimator<?>>estimatorsStores the distribution estimatorsprotected NumberVector.Factory<V>factoryNumber vector factory.private static LoggingLOGClass logger.
-
Constructor Summary
Constructors Constructor Description AttributeWiseCDFNormalization(java.util.List<? extends 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.MultipleObjectsBundlefilter(MultipleObjectsBundle objects)Filter a set of object packages.protected 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 Logging LOG
Class logger.
-
estimators
protected java.util.List<? extends DistributionEstimator<?>> estimators
Stores the distribution estimators
-
dists
protected java.util.List<Distribution> dists
Stores the estimated distributions
-
factory
protected NumberVector.Factory<V extends NumberVector> factory
Number vector factory.
-
-
Constructor Detail
-
AttributeWiseCDFNormalization
public AttributeWiseCDFNormalization(java.util.List<? extends DistributionEstimator<?>> estimators)
Constructor.- Parameters:
estimators- Distribution estimators
-
-
Method Detail
-
filter
public MultipleObjectsBundle filter(MultipleObjectsBundle objects)
Description copied from interface:ObjectFilterFilter a set of object packages.- Specified by:
filterin interfaceObjectFilter- Parameters:
objects- Object to filter- Returns:
- Filtered objects
-
findBestFit
protected 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
-
-