diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java | 100 |
1 files changed, 48 insertions, 52 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java index 670b4559..6c0a417d 100644 --- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java +++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2013 + Copyright (C) 2014 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -25,9 +25,8 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca; import de.lmu.ifi.dbs.elki.data.NumberVector; import de.lmu.ifi.dbs.elki.database.ids.DBIDs; -import de.lmu.ifi.dbs.elki.database.ids.distance.DistanceDBIDList; +import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDList; import de.lmu.ifi.dbs.elki.database.relation.Relation; -import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance; import de.lmu.ifi.dbs.elki.math.linearalgebra.EigenvalueDecomposition; import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix; import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs; @@ -47,59 +46,21 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * @apiviz.landmark * @apiviz.has PCAFilteredResult oneway - - «create» * @apiviz.composedOf EigenPairFilter - * - * @param <V> Vector class to use */ -public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { - /** - * Parameter to specify the filter for determination of the strong and weak - * eigenvectors, must be a subclass of {@link EigenPairFilter}. - * <p> - * Default value: {@link PercentageEigenPairFilter} - * </p> - * <p> - * Key: {@code -pca.filter} - * </p> - */ - public static final OptionID PCA_EIGENPAIR_FILTER = new OptionID("pca.filter", "Filter class to determine the strong and weak eigenvectors."); - - /** - * Parameter to specify a constant big value to reset high eigenvalues, must - * be a double greater than 0. - * <p> - * Default value: {@code 1.0} - * </p> - * <p> - * Key: {@code -pca.big} - * </p> - */ - public static final OptionID BIG_ID = new OptionID("pca.big", "A constant big value to reset high eigenvalues."); - - /** - * Parameter to specify a constant small value to reset low eigenvalues, must - * be a double greater than 0. - * <p> - * Default value: {@code 0.0} - * </p> - * <p> - * Key: {@code -pca.small} - * </p> - */ - public static final OptionID SMALL_ID = new OptionID("pca.small", "A constant small value to reset low eigenvalues."); - +public class PCAFilteredRunner extends PCARunner { /** * Holds the instance of the EigenPairFilter specified by - * {@link #PCA_EIGENPAIR_FILTER}. + * {@link Parameterizer#PCA_EIGENPAIR_FILTER}. */ private EigenPairFilter eigenPairFilter; /** - * Holds the value of {@link #BIG_ID}. + * Holds the value of {@link Parameterizer#BIG_ID}. */ private double big; /** - * Holds the value of {@link #SMALL_ID}. + * Holds the value of {@link Parameterizer#SMALL_ID}. */ private double small; @@ -111,7 +72,7 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { * @param big Replacement for large eigenvalues * @param small Replacement for small eigenvalues */ - public PCAFilteredRunner(CovarianceMatrixBuilder<V> covarianceMatrixBuilder, EigenPairFilter eigenPairFilter, double big, double small) { + public PCAFilteredRunner(CovarianceMatrixBuilder covarianceMatrixBuilder, EigenPairFilter eigenPairFilter, double big, double small) { super(covarianceMatrixBuilder); this.eigenPairFilter = eigenPairFilter; this.big = big; @@ -126,7 +87,7 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { * @return PCA result */ @Override - public PCAFilteredResult processIds(DBIDs ids, Relation<? extends V> database) { + public PCAFilteredResult processIds(DBIDs ids, Relation<? extends NumberVector> database) { return processCovarMatrix(covarianceMatrixBuilder.processIds(ids, database)); } @@ -135,11 +96,10 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { * * @param results a collection of QueryResults * @param database the database used - * @param <D> distance type * @return PCA result */ @Override - public <D extends NumberDistance<D, ?>> PCAFilteredResult processQueryResult(DistanceDBIDList<D> results, Relation<? extends V> database) { + public PCAFilteredResult processQueryResult(DoubleDBIDList results, Relation<? extends NumberVector> database) { return processCovarMatrix(covarianceMatrixBuilder.processQueryResults(results, database)); } @@ -185,7 +145,43 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { * * @apiviz.exclude */ - public static class Parameterizer<V extends NumberVector<?>> extends PCARunner.Parameterizer<V> { + public static class Parameterizer extends PCARunner.Parameterizer { + /** + * Parameter to specify the filter for determination of the strong and weak + * eigenvectors, must be a subclass of {@link EigenPairFilter}. + * <p> + * Default value: {@link PercentageEigenPairFilter} + * </p> + * <p> + * Key: {@code -pca.filter} + * </p> + */ + public static final OptionID PCA_EIGENPAIR_FILTER = new OptionID("pca.filter", "Filter class to determine the strong and weak eigenvectors."); + + /** + * Parameter to specify a constant big value to reset high eigenvalues, must + * be a double greater than 0. + * <p> + * Default value: {@code 1.0} + * </p> + * <p> + * Key: {@code -pca.big} + * </p> + */ + public static final OptionID BIG_ID = new OptionID("pca.big", "A constant big value to reset high eigenvalues."); + + /** + * Parameter to specify a constant small value to reset low eigenvalues, must + * be a double greater than 0. + * <p> + * Default value: {@code 0.0} + * </p> + * <p> + * Key: {@code -pca.small} + * </p> + */ + public static final OptionID SMALL_ID = new OptionID("pca.small", "A constant small value to reset low eigenvalues."); + /** * Holds the instance of the EigenPairFilter specified by * {@link #PCA_EIGENPAIR_FILTER}. @@ -228,8 +224,8 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> { } @Override - protected PCAFilteredRunner<V> makeInstance() { - return new PCAFilteredRunner<>(covarianceMatrixBuilder, eigenPairFilter, big, small); + protected PCAFilteredRunner makeInstance() { + return new PCAFilteredRunner(covarianceMatrixBuilder, eigenPairFilter, big, small); } } } |