summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java b/src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
index 298a5853..d5cd3f40 100644
--- a/src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
+++ b/src/de/lmu/ifi/dbs/elki/utilities/scaling/outlier/MultiplicativeInverseScaling.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling.outlier;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.utilities.scaling.outlier;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.result.outlier.OutlierResult;
+import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.NumberArrayAdapter;
import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
/**
@@ -68,16 +69,6 @@ public class MultiplicativeInverseScaling implements OutlierScalingFunction {
@Override
public void prepare(OutlierResult or) {
- scaleval = getScaleValue(or);
- }
-
- /**
- * Compute the scaling value in a linear scan over the annotation.
- *
- * @param or Outlier result
- * @return Scaling value.
- */
- private static double getScaleValue(OutlierResult or) {
double max = Double.MIN_VALUE;
Relation<Double> scores = or.getScores();
for(DBIDIter id = scores.iterDBIDs(); id.valid(); id.advance()) {
@@ -87,9 +78,22 @@ public class MultiplicativeInverseScaling implements OutlierScalingFunction {
max = Math.max(max, inv);
}
}
- return max;
+ scaleval = max;
}
-
+
+ @Override
+ public <A> void prepare(A array, NumberArrayAdapter<?, A> adapter) {
+ double max = Double.MIN_VALUE;
+ final int size = adapter.size(array);
+ for (int i = 0; i < size; i++) {
+ double inv = Math.abs(1.0 / adapter.getDouble(array, i));
+ if(!Double.isInfinite(inv) && !Double.isNaN(inv)) {
+ max = Math.max(max, inv);
+ }
+ }
+ scaleval = max;
+ }
+
@Override
public double getMin() {
return 0.0;