Class AttributeWiseVarianceNormalization<V extends NumberVector>
- java.lang.Object
-
- elki.datasource.filter.AbstractConversionFilter<I,O>
-
- elki.datasource.filter.AbstractVectorConversionFilter<V,V>
-
- elki.datasource.filter.normalization.columnwise.AttributeWiseVarianceNormalization<V>
-
- Type Parameters:
V- vector type
- All Implemented Interfaces:
Normalization<V>,ObjectFilter
@Alias({"z","standard","standardize","standardization"}) @Priority(200) public class AttributeWiseVarianceNormalization<V extends NumberVector> extends AbstractVectorConversionFilter<V,V> implements Normalization<V>
Class to perform and undo a normalization on real vectors with respect to given mean and standard deviation in each dimension.We use the biased variance (
MeanVariance.getPopulationStddev()), because this produces that with exactly standard deviation 1. While often the unbiased estimate (MeanVariance.getSampleStddev()) is more appropriate, it will not ensure this interesting property. For large data, the difference will be small anyway.- Since:
- 0.4.0
- Author:
- Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAttributeWiseVarianceNormalization.Par<V extends NumberVector>Parameterization class.
-
Field Summary
Fields Modifier and Type Field Description private static LoggingLOGClass logger.private double[]meanStores the mean in each dimension.(package private) MeanVariance[]mvsTemporary storage used during initialization.private double[]stddevStores the standard deviation in each dimension.-
Fields inherited from class elki.datasource.filter.AbstractVectorConversionFilter
factory
-
-
Constructor Summary
Constructors Constructor Description AttributeWiseVarianceNormalization()Constructor.AttributeWiseVarianceNormalization(double[] mean, double[] stddev)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected SimpleTypeInformation<? super V>convertedType(SimpleTypeInformation<V> in)Get the output type from the input type after conversion.protected VfilterSingleObject(V featureVector)Normalize a single instance.protected SimpleTypeInformation<? super V>getInputTypeRestriction()Get the input type restriction used for negotiating the data query.protected LogginggetLogger()Class logger.private doublenormalize(int d, double val)Normalize a single dimension.protected voidprepareComplete()Complete the initialization phase.protected voidprepareProcessInstance(V featureVector)Process a single object during initialization.protected booleanprepareStart(SimpleTypeInformation<V> in)Return "true" when the normalization needs initialization (two-pass filtering!).private doublerestore(int d, double val)Restore a single dimension.Vrestore(V featureVector)Transforms a feature vector to the original attribute ranges.java.lang.StringtoString()LinearEquationSystemtransform(LinearEquationSystem linearEquationSystem)Transforms a linear equation system describing linear dependencies derived on the normalized space into a linear equation system describing linear dependencies quantitatively adapted to the original space.-
Methods inherited from class elki.datasource.filter.AbstractVectorConversionFilter
initializeOutputType
-
Methods inherited from class elki.datasource.filter.AbstractConversionFilter
filter
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface elki.datasource.filter.ObjectFilter
filter
-
-
-
-
Field Detail
-
LOG
private static final Logging LOG
Class logger.
-
mean
private double[] mean
Stores the mean in each dimension.
-
stddev
private double[] stddev
Stores the standard deviation in each dimension.
-
mvs
MeanVariance[] mvs
Temporary storage used during initialization.
-
-
Method Detail
-
prepareStart
protected boolean prepareStart(SimpleTypeInformation<V> in)
Description copied from class:AbstractConversionFilterReturn "true" when the normalization needs initialization (two-pass filtering!).- Overrides:
prepareStartin classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Parameters:
in- Input type information- Returns:
- true or false
-
prepareProcessInstance
protected void prepareProcessInstance(V featureVector)
Description copied from class:AbstractConversionFilterProcess a single object during initialization.- Overrides:
prepareProcessInstancein classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Parameters:
featureVector- Object to process
-
prepareComplete
protected void prepareComplete()
Description copied from class:AbstractConversionFilterComplete the initialization phase.- Overrides:
prepareCompletein classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
-
filterSingleObject
protected V filterSingleObject(V featureVector)
Description copied from class:AbstractConversionFilterNormalize a single instance. You can implement this as UnsupportedOperationException if you override both public "normalize" functions!- Specified by:
filterSingleObjectin classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Parameters:
featureVector- Database object to normalize- Returns:
- Normalized database object
-
restore
public V restore(V featureVector) throws NonNumericFeaturesException
Description copied from interface:NormalizationTransforms a feature vector to the original attribute ranges.- Specified by:
restorein interfaceNormalization<V extends NumberVector>- Parameters:
featureVector- a feature vector to be transformed into original space- Returns:
- a feature vector transformed into original space corresponding to the given feature vector
- Throws:
NonNumericFeaturesException- feature vector is not compatible with values initialized during normalization
-
normalize
private double normalize(int d, double val)Normalize a single dimension.- Parameters:
d- Dimensionval- Value- Returns:
- Normalized value
-
restore
private double restore(int d, double val)Restore a single dimension.- Parameters:
d- Dimensionval- Value- Returns:
- Normalized value
-
transform
public LinearEquationSystem transform(LinearEquationSystem linearEquationSystem)
Description copied from interface:NormalizationTransforms a linear equation system describing linear dependencies derived on the normalized space into a linear equation system describing linear dependencies quantitatively adapted to the original space.- Specified by:
transformin interfaceNormalization<V extends NumberVector>- Parameters:
linearEquationSystem- the linear equation system to be transformed- Returns:
- a linear equation system describing linear dependencies derived on the normalized space transformed into a linear equation system describing linear dependencies quantitatively adapted to the original space
-
toString
public java.lang.String toString()
- Overrides:
toStringin classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
-
convertedType
protected SimpleTypeInformation<? super V> convertedType(SimpleTypeInformation<V> in)
Description copied from class:AbstractConversionFilterGet the output type from the input type after conversion.- Specified by:
convertedTypein classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Parameters:
in- input type restriction- Returns:
- output type restriction
-
getLogger
protected Logging getLogger()
Description copied from class:AbstractConversionFilterClass logger.- Specified by:
getLoggerin classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Returns:
- Logger
-
getInputTypeRestriction
protected SimpleTypeInformation<? super V> getInputTypeRestriction()
Description copied from class:AbstractConversionFilterGet the input type restriction used for negotiating the data query.- Specified by:
getInputTypeRestrictionin classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>- Returns:
- Type restriction
-
-