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 class
AttributeWiseVarianceNormalization.Par<V extends NumberVector>
Parameterization class.
-
Field Summary
Fields Modifier and Type Field Description private static Logging
LOG
Class logger.private double[]
mean
Stores the mean in each dimension.(package private) MeanVariance[]
mvs
Temporary storage used during initialization.private double[]
stddev
Stores 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 V
filterSingleObject(V featureVector)
Normalize a single instance.protected SimpleTypeInformation<? super V>
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.protected Logging
getLogger()
Class logger.private double
normalize(int d, double val)
Normalize a single dimension.protected void
prepareComplete()
Complete the initialization phase.protected void
prepareProcessInstance(V featureVector)
Process a single object during initialization.protected boolean
prepareStart(SimpleTypeInformation<V> in)
Return "true" when the normalization needs initialization (two-pass filtering!).private double
restore(int d, double val)
Restore a single dimension.V
restore(V featureVector)
Transforms a feature vector to the original attribute ranges.java.lang.String
toString()
LinearEquationSystem
transform(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:AbstractConversionFilter
Return "true" when the normalization needs initialization (two-pass filtering!).- Overrides:
prepareStart
in 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:AbstractConversionFilter
Process a single object during initialization.- Overrides:
prepareProcessInstance
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
- Parameters:
featureVector
- Object to process
-
prepareComplete
protected void prepareComplete()
Description copied from class:AbstractConversionFilter
Complete the initialization phase.- Overrides:
prepareComplete
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
-
filterSingleObject
protected V filterSingleObject(V featureVector)
Description copied from class:AbstractConversionFilter
Normalize a single instance. You can implement this as UnsupportedOperationException if you override both public "normalize" functions!- Specified by:
filterSingleObject
in 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:Normalization
Transforms a feature vector to the original attribute ranges.- Specified by:
restore
in 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:Normalization
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.- Specified by:
transform
in 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:
toString
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
-
convertedType
protected SimpleTypeInformation<? super V> convertedType(SimpleTypeInformation<V> in)
Description copied from class:AbstractConversionFilter
Get the output type from the input type after conversion.- Specified by:
convertedType
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
- Parameters:
in
- input type restriction- Returns:
- output type restriction
-
getLogger
protected Logging getLogger()
Description copied from class:AbstractConversionFilter
Class logger.- Specified by:
getLogger
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
- Returns:
- Logger
-
getInputTypeRestriction
protected SimpleTypeInformation<? super V> getInputTypeRestriction()
Description copied from class:AbstractConversionFilter
Get the input type restriction used for negotiating the data query.- Specified by:
getInputTypeRestriction
in classAbstractConversionFilter<V extends NumberVector,V extends NumberVector>
- Returns:
- Type restriction
-
-