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 class
AttributeWiseCDFNormalization.Par<V extends NumberVector>
Parameterization class.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Distribution>
dists
Stores the estimated distributionsprotected java.util.List<? extends DistributionEstimator<?>>
estimators
Stores the distribution estimatorsprotected NumberVector.Factory<V>
factory
Number vector factory.private static Logging
LOG
Class 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 boolean
constantZero(java.util.List<V> column, AttributeWiseCDFNormalization.Adapter adapter)
Test if an attribute is constant zero.MultipleObjectsBundle
filter(MultipleObjectsBundle objects)
Filter a set of object packages.protected Distribution
findBestFit(java.util.List<V> col, AttributeWiseCDFNormalization.Adapter adapter, int d, double[] test)
Find the best fitting distribution.java.lang.String
toString()
-
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:ObjectFilter
Filter a set of object packages.- Specified by:
filter
in 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:
true
if all values are zero
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-