summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca')
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java4
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java4
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java39
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java17
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java29
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java28
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java20
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java14
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java18
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java17
10 files changed, 94 insertions, 96 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
index 22cefa87..7a2917c5 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
@@ -30,7 +30,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.EigenPair;
import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -133,7 +133,7 @@ public class DropEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
- walphaP.addConstraint(new GreaterEqualConstraint(0.0));
+ walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
if (config.grab(walphaP)) {
walpha = walphaP.getValue();
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
index f613e067..79ee4ea6 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
@@ -33,7 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
@@ -122,7 +122,7 @@ public class FirstNEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
IntParameter nP = new IntParameter(EIGENPAIR_FILTER_N);
- nP.addConstraint(new GreaterEqualConstraint(0));
+ nP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_INT);
if(config.grab(nP)) {
n = nP.intValue();
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
index b3bd04b3..4d9e7331 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
@@ -34,9 +34,8 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GlobalParameterConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.LessEqualConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ParameterFlagGlobalConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
@@ -98,26 +97,27 @@ public class LimitEigenPairFilter implements EigenPairFilter {
@Override
public FilteredEigenPairs filter(SortedEigenPairs eigenPairs) {
StringBuilder msg = new StringBuilder();
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("delta = ").append(delta);
}
// determine limit
double limit;
- if (absolute) {
+ if(absolute) {
limit = delta;
- } else {
+ }
+ else {
double max = Double.NEGATIVE_INFINITY;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
double eigenValue = Math.abs(eigenPair.getEigenvalue());
- if (max < eigenValue) {
+ if(max < eigenValue) {
max = eigenValue;
}
}
limit = max * delta;
}
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("\nlimit = ").append(limit);
}
@@ -126,16 +126,17 @@ public class LimitEigenPairFilter implements EigenPairFilter {
List<EigenPair> weakEigenPairs = new ArrayList<>();
// determine strong and weak eigenpairs
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
double eigenValue = Math.abs(eigenPair.getEigenvalue());
- if (eigenValue >= limit) {
+ if(eigenValue >= limit) {
strongEigenPairs.add(eigenPair);
- } else {
+ }
+ else {
weakEigenPairs.add(eigenPair);
}
}
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("\nstrong EigenPairs = ").append(strongEigenPairs);
msg.append("\nweak EigenPairs = ").append(weakEigenPairs);
LOG.debugFine(msg.toString());
@@ -166,16 +167,16 @@ public class LimitEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
Flag absoluteF = new Flag(EIGENPAIR_FILTER_ABSOLUTE);
- if (config.grab(absoluteF)) {
+ if(config.grab(absoluteF)) {
absolute = absoluteF.isTrue();
}
DoubleParameter deltaP = new DoubleParameter(EIGENPAIR_FILTER_DELTA, DEFAULT_DELTA);
- deltaP.addConstraint(new GreaterEqualConstraint(0));
- if (config.grab(deltaP)) {
+ deltaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(deltaP)) {
delta = deltaP.doubleValue();
// TODO: make this a global constraint?
- if (absolute && deltaP.tookDefaultValue()) {
+ if(absolute && deltaP.tookDefaultValue()) {
config.reportError(new WrongParameterValueException("Illegal parameter setting: " + "Flag " + absoluteF.getName() + " is set, " + "but no value for " + deltaP.getName() + " is specified."));
}
}
@@ -187,10 +188,8 @@ public class LimitEigenPairFilter implements EigenPairFilter {
List<ParameterConstraint<? super Double>> cons = new ArrayList<>();
// TODO: Keep the constraint here - applies to non-conditional case as
// well, and is set above.
- ParameterConstraint<Number> aboveNull = new GreaterEqualConstraint(0.);
- cons.add(aboveNull);
- ParameterConstraint<Number> underOne = new LessEqualConstraint(1.);
- cons.add(underOne);
+ cons.add(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ cons.add(CommonConstraints.LESS_EQUAL_ONE_DOUBLE);
GlobalParameterConstraint gpc = new ParameterFlagGlobalConstraint<>(deltaP, cons, absoluteF, false);
config.checkConstraint(gpc);
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 2318b72d..670b4559 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
@@ -32,8 +32,7 @@ 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;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.LessGlobalConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -207,20 +206,20 @@ public class PCAFilteredRunner<V extends NumberVector<?>> extends PCARunner<V> {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
ObjectParameter<EigenPairFilter> filterP = new ObjectParameter<>(PCA_EIGENPAIR_FILTER, EigenPairFilter.class, PercentageEigenPairFilter.class);
- if (config.grab(filterP)) {
+ if(config.grab(filterP)) {
eigenPairFilter = filterP.instantiateClass(config);
}
- DoubleParameter bigP = new DoubleParameter(BIG_ID, 1.0);
- bigP.addConstraint(new GreaterConstraint(0));
- if (config.grab(bigP)) {
+ DoubleParameter bigP = new DoubleParameter(BIG_ID, 1.);
+ bigP.addConstraint(CommonConstraints.GREATER_THAN_ZERO_DOUBLE);
+ if(config.grab(bigP)) {
big = bigP.doubleValue();
}
- DoubleParameter smallP = new DoubleParameter(SMALL_ID, 0.0);
- smallP.addConstraint(new GreaterEqualConstraint(0));
- if (config.grab(smallP)) {
+ DoubleParameter smallP = new DoubleParameter(SMALL_ID, 0.);
+ smallP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(smallP)) {
small = smallP.doubleValue();
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
index 85e29867..5602228e 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
@@ -33,8 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.LessConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -90,7 +89,7 @@ public class PercentageEigenPairFilter implements EigenPairFilter {
@Override
public FilteredEigenPairs filter(SortedEigenPairs eigenPairs) {
StringBuilder msg = new StringBuilder();
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("alpha = ").append(alpha);
msg.append("\nsortedEigenPairs = ").append(eigenPairs);
}
@@ -101,32 +100,34 @@ public class PercentageEigenPairFilter implements EigenPairFilter {
// determine sum of eigenvalues
double totalSum = 0;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
totalSum += eigenPair.getEigenvalue();
}
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("\ntotalSum = ").append(totalSum);
}
// determine strong and weak eigenpairs
double currSum = 0;
boolean found = false;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
currSum += eigenPair.getEigenvalue();
- if (currSum / totalSum >= alpha) {
- if (!found) {
+ if(currSum / totalSum >= alpha) {
+ if(!found) {
found = true;
strongEigenPairs.add(eigenPair);
- } else {
+ }
+ else {
weakEigenPairs.add(eigenPair);
}
- } else {
+ }
+ else {
strongEigenPairs.add(eigenPair);
}
}
- if (LOG.isDebugging()) {
+ if(LOG.isDebugging()) {
msg.append("\nstrong EigenPairs = ").append(strongEigenPairs);
msg.append("\nweak EigenPairs = ").append(weakEigenPairs);
LOG.debugFine(msg.toString());
@@ -153,9 +154,9 @@ public class PercentageEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter alphaP = new DoubleParameter(ALPHA_ID, DEFAULT_ALPHA);
- alphaP.addConstraint(new GreaterConstraint(0.0));
- alphaP.addConstraint(new LessConstraint(1.0));
- if (config.grab(alphaP)) {
+ alphaP.addConstraint(CommonConstraints.GREATER_THAN_ZERO_DOUBLE);
+ alphaP.addConstraint(CommonConstraints.LESS_THAN_ONE_DOUBLE);
+ if(config.grab(alphaP)) {
alpha = alphaP.doubleValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
index b99de2e1..4f412257 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
@@ -32,9 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.LessConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -133,7 +131,7 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
// determine sum of eigenvalues
double totalSum = 0;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
totalSum += eigenPair.getEigenvalue();
}
@@ -143,35 +141,35 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
double currSum = 0;
boolean found = false;
int i;
- for (i = 0; i < eigenPairs.size(); i++) {
+ for(i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
// weak Eigenvector?
- if (eigenPair.getEigenvalue() < expectedVariance) {
+ if(eigenPair.getEigenvalue() < expectedVariance) {
break;
}
currSum += eigenPair.getEigenvalue();
// calculate progressive alpha level
double alpha = 1.0 - (1.0 - palpha) * (1.0 - (i + 1) / eigenPairs.size());
- if (currSum / totalSum >= alpha || i == eigenPairs.size() - 1) {
+ if(currSum / totalSum >= alpha || i == eigenPairs.size() - 1) {
found = true;
strongEigenPairs.add(eigenPair);
break;
}
}
// if we didn't hit our alpha level, we consider all vectors to be weak!
- if (!found) {
+ if(!found) {
assert (weakEigenPairs.size() == 0);
weakEigenPairs = strongEigenPairs;
strongEigenPairs = new ArrayList<>();
}
- for (; i < eigenPairs.size(); i++) {
+ for(; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
weakEigenPairs.add(eigenPair);
}
// the code using this method doesn't expect an empty strong set,
// if we didn't find any strong ones, we make all vectors strong
- if (strongEigenPairs.size() == 0) {
+ if(strongEigenPairs.size() == 0) {
return new FilteredEigenPairs(new ArrayList<EigenPair>(), weakEigenPairs);
}
return new FilteredEigenPairs(weakEigenPairs, strongEigenPairs);
@@ -200,15 +198,15 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter palphaP = new DoubleParameter(EIGENPAIR_FILTER_PALPHA, DEFAULT_PALPHA);
- palphaP.addConstraint(new GreaterConstraint(0.0));
- palphaP.addConstraint(new LessConstraint(1.0));
- if (config.grab(palphaP)) {
+ palphaP.addConstraint(CommonConstraints.GREATER_THAN_ZERO_DOUBLE);
+ palphaP.addConstraint(CommonConstraints.LESS_THAN_ONE_DOUBLE);
+ if(config.grab(palphaP)) {
palpha = palphaP.getValue();
}
DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
- walphaP.addConstraint(new GreaterEqualConstraint(0.0));
- if (config.grab(walphaP)) {
+ walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(walphaP)) {
walpha = walphaP.getValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
index 3e9bccf7..2b369a32 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
@@ -38,7 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.RandomFactory;
import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter;
@@ -107,31 +107,31 @@ public class RANSACCovarianceMatrixBuilder<V extends NumberVector<?>> extends Ab
DBIDs best = DBIDUtil.EMPTYDBIDS;
double tresh = ChiSquaredDistribution.quantile(0.85, dim);
- for (int i = 0; i < iterations; i++) {
+ for(int i = 0; i < iterations; i++) {
DBIDs sample = DBIDUtil.randomSample(ids, dim + 1, rnd);
CovarianceMatrix cv = CovarianceMatrix.make(relation, sample);
Vector centroid = cv.getMeanVector();
Matrix p = cv.destroyToSampleMatrix().inverse();
ModifiableDBIDs support = DBIDUtil.newHashSet();
- for (DBIDIter id = ids.iter(); id.valid(); id.advance()) {
+ for(DBIDIter id = ids.iter(); id.valid(); id.advance()) {
Vector vec = relation.get(id).getColumnVector().minusEquals(centroid);
double sqlen = vec.transposeTimesTimes(p, vec);
- if (sqlen < tresh) {
+ if(sqlen < tresh) {
support.add(id);
}
}
- if (support.size() > best.size()) {
+ if(support.size() > best.size()) {
best = support;
}
- if (support.size() >= ids.size()) {
+ if(support.size() >= ids.size()) {
break; // Can't get better than this!
}
}
// logger.warning("Consensus size: "+best.size()+" of "+ids.size());
// Fall back to regular PCA
- if (best.size() <= dim) {
+ if(best.size() <= dim) {
return CovarianceMatrix.make(relation, ids).destroyToSampleMatrix();
}
// Return estimation based on consensus set.
@@ -172,12 +172,12 @@ public class RANSACCovarianceMatrixBuilder<V extends NumberVector<?>> extends Ab
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
IntParameter iterP = new IntParameter(ITER_ID, 1000);
- iterP.addConstraint(new GreaterConstraint(0));
- if (config.grab(iterP)) {
+ iterP.addConstraint(CommonConstraints.GREATER_EQUAL_ONE_INT);
+ if(config.grab(iterP)) {
iterations = iterP.intValue();
}
RandomParameter rndP = new RandomParameter(SEED_ID);
- if (config.grab(rndP)) {
+ if(config.grab(rndP)) {
rnd = rndP.getValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
index 12da3fdf..32092ce9 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
@@ -32,7 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -93,21 +93,21 @@ public class RelativeEigenPairFilter implements EigenPairFilter {
// find the last eigenvector that is considered 'strong' by the weak rule
// applied to the remaining vectors only
double eigenValueSum = eigenPairs.getEigenPair(eigenPairs.size() - 1).getEigenvalue();
- for (int i = eigenPairs.size() - 2; i >= 0; i--) {
+ for(int i = eigenPairs.size() - 2; i >= 0; i--) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
eigenValueSum += eigenPair.getEigenvalue();
double needEigenvalue = eigenValueSum / (eigenPairs.size() - i) * ralpha;
- if (eigenPair.getEigenvalue() >= needEigenvalue) {
+ if(eigenPair.getEigenvalue() >= needEigenvalue) {
contrastAtMax = i;
break;
}
}
- for (int i = 0; i <= contrastAtMax /* && i < eigenPairs.size() */; i++) {
+ for(int i = 0; i <= contrastAtMax /* && i < eigenPairs.size() */; i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
strongEigenPairs.add(eigenPair);
}
- for (int i = contrastAtMax + 1; i < eigenPairs.size(); i++) {
+ for(int i = contrastAtMax + 1; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
weakEigenPairs.add(eigenPair);
}
@@ -129,8 +129,8 @@ public class RelativeEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter ralphaP = new DoubleParameter(EIGENPAIR_FILTER_RALPHA, DEFAULT_RALPHA);
- ralphaP.addConstraint(new GreaterEqualConstraint(0.0));
- if (config.grab(ralphaP)) {
+ ralphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(ralphaP)) {
ralpha = ralphaP.getValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
index 73044b59..6219f77f 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
@@ -31,7 +31,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs;
import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -87,32 +87,32 @@ public class SignificantEigenPairFilter implements EigenPairFilter {
double maxContrast = 0.0;
// calc the eigenvalue sum.
double eigenValueSum = 0.0;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
eigenValueSum += eigenPair.getEigenvalue();
}
double weakEigenvalue = eigenValueSum / eigenPairs.size() * walpha;
// now find the maximum contrast.
double currSum = eigenPairs.getEigenPair(eigenPairs.size() - 1).getEigenvalue();
- for (int i = eigenPairs.size() - 2; i >= 0; i--) {
+ for(int i = eigenPairs.size() - 2; i >= 0; i--) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
currSum += eigenPair.getEigenvalue();
// weak?
- if (eigenPair.getEigenvalue() < weakEigenvalue) {
+ if(eigenPair.getEigenvalue() < weakEigenvalue) {
continue;
}
double contrast = eigenPair.getEigenvalue() / (currSum / (eigenPairs.size() - i));
- if (contrast > maxContrast) {
+ if(contrast > maxContrast) {
maxContrast = contrast;
contrastMaximum = i;
}
}
- for (int i = 0; i <= contrastMaximum /* && i < eigenPairs.size() */; i++) {
+ for(int i = 0; i <= contrastMaximum /* && i < eigenPairs.size() */; i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
strongEigenPairs.add(eigenPair);
}
- for (int i = contrastMaximum + 1; i < eigenPairs.size(); i++) {
+ for(int i = contrastMaximum + 1; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
weakEigenPairs.add(eigenPair);
}
@@ -134,8 +134,8 @@ public class SignificantEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
- walphaP.addConstraint(new GreaterEqualConstraint(0.0));
- if (config.grab(walphaP)) {
+ walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(walphaP)) {
walpha = walphaP.getValue();
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
index 66bcba30..92e1e32e 100644
--- a/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
+++ b/src/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
@@ -32,7 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.CommonConstraints;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
@@ -85,25 +85,26 @@ public class WeakEigenPairFilter implements EigenPairFilter {
// determine sum of eigenvalues
double totalSum = 0;
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
totalSum += eigenPair.getEigenvalue();
}
double expectEigenvalue = totalSum / eigenPairs.size() * walpha;
// determine strong and weak eigenpairs
- for (int i = 0; i < eigenPairs.size(); i++) {
+ for(int i = 0; i < eigenPairs.size(); i++) {
EigenPair eigenPair = eigenPairs.getEigenPair(i);
- if (eigenPair.getEigenvalue() > expectEigenvalue) {
+ if(eigenPair.getEigenvalue() > expectEigenvalue) {
strongEigenPairs.add(eigenPair);
- } else {
+ }
+ else {
weakEigenPairs.add(eigenPair);
}
}
// the code using this method doesn't expect an empty strong set,
// if we didn't find any strong ones, we make all vectors strong
- if (strongEigenPairs.size() == 0) {
+ if(strongEigenPairs.size() == 0) {
return new FilteredEigenPairs(new ArrayList<EigenPair>(), weakEigenPairs);
}
return new FilteredEigenPairs(weakEigenPairs, strongEigenPairs);
@@ -127,8 +128,8 @@ public class WeakEigenPairFilter implements EigenPairFilter {
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
DoubleParameter walphaP = new DoubleParameter(EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
- walphaP.addConstraint(new GreaterEqualConstraint(0.0));
- if (config.grab(walphaP)) {
+ walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
+ if(config.grab(walphaP)) {
walpha = walphaP.getValue();
}
}