summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/algorithm/statistics
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/algorithm/statistics')
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/AddSingleScale.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/AveragePrecisionAtK.java96
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/DistanceStatisticsWithClasses.java18
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/EvaluateRankingQuality.java22
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/RankingQualityHistogram.java12
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/statistics/package-info.java2
6 files changed, 93 insertions, 59 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AddSingleScale.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AddSingleScale.java
index 159fb691..cbae17ca 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AddSingleScale.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AddSingleScale.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.algorithm.statistics;
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
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AveragePrecisionAtK.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AveragePrecisionAtK.java
index e8165afc..1b87a015 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AveragePrecisionAtK.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/AveragePrecisionAtK.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.algorithm.statistics;
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
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Collection;
import de.lmu.ifi.dbs.elki.algorithm.AbstractDistanceBasedAlgorithm;
+import de.lmu.ifi.dbs.elki.data.ClassLabel;
import de.lmu.ifi.dbs.elki.data.DoubleVector;
import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.data.type.TypeInformation;
@@ -35,23 +36,23 @@ import de.lmu.ifi.dbs.elki.database.Database;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
+import de.lmu.ifi.dbs.elki.database.ids.distance.KNNList;
import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery;
import de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distanceresultlist.KNNResult;
import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance;
import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress;
import de.lmu.ifi.dbs.elki.math.MeanVariance;
import de.lmu.ifi.dbs.elki.result.CollectionResult;
-import de.lmu.ifi.dbs.elki.result.HistogramResult;
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.LessEqualConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.LongParameter;
@@ -60,6 +61,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.LongParameter;
* at k, when ranking the objects by distance.
*
* @author Erich Schubert
+ *
* @param <V> Vector type
* @param <D> Distance type
*/
@@ -73,38 +75,51 @@ public class AveragePrecisionAtK<V extends Object, D extends NumberDistance<D, ?
* The parameter k - the number of neighbors to retrieve.
*/
private int k;
-
+
/**
* Relative number of object to use in sampling.
*/
private double sampling = 1.0;
-
+
/**
* Random sampling seed.
*/
private Long seed = null;
/**
+ * Include query object in evaluation.
+ */
+ private boolean includeSelf;
+
+ /**
* Constructor.
*
* @param distanceFunction Distance function
* @param k K parameter
* @param sampling Sampling rate
* @param seed Random sampling seed (may be null)
+ * @param includeSelf Include query object in evaluation
*/
- public AveragePrecisionAtK(DistanceFunction<? super V, D> distanceFunction, int k, double sampling, Long seed) {
+ public AveragePrecisionAtK(DistanceFunction<? super V, D> distanceFunction, int k, double sampling, Long seed, boolean includeSelf) {
super(distanceFunction);
this.k = k;
this.sampling = sampling;
this.seed = seed;
+ this.includeSelf = includeSelf;
}
- @Override
- public HistogramResult<DoubleVector> run(Database database) {
- final Relation<V> relation = database.getRelation(getInputTypeRestriction()[0]);
- final Relation<Object> lrelation = database.getRelation(getInputTypeRestriction()[1]);
+ /**
+ * Run the algorithm
+ *
+ * @param database Database to run on (for kNN queries)
+ * @param relation Relation for distance computations
+ * @param lrelation Relation for class label comparison
+ * @return Vectors containing mean and standard deviation.
+ */
+ public CollectionResult<DoubleVector> run(Database database, Relation<V> relation, Relation<ClassLabel> lrelation) {
final DistanceQuery<V, D> distQuery = database.getDistanceQuery(relation, getDistanceFunction());
- final KNNQuery<V, D> knnQuery = database.getKNNQuery(distQuery, k);
+ final int qk = k + (includeSelf ? 0 : 1);
+ final KNNQuery<V, D> knnQuery = database.getKNNQuery(distQuery, qk);
MeanVariance[] mvs = MeanVariance.newArray(k);
@@ -115,53 +130,56 @@ public class AveragePrecisionAtK<V extends Object, D extends NumberDistance<D, ?
} else {
ids = relation.getDBIDs();
}
-
- if(LOG.isVerbose()) {
+
+ if (LOG.isVerbose()) {
LOG.verbose("Processing points...");
}
FiniteProgress objloop = LOG.isVerbose() ? new FiniteProgress("Computing nearest neighbors", ids.size(), LOG) : null;
// sort neighbors
- for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
- KNNResult<D> knn = knnQuery.getKNNForDBID(iter, k);
+ for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ KNNList<D> knn = knnQuery.getKNNForDBID(iter, qk);
Object label = lrelation.get(iter);
int positive = 0, i = 0;
- for (DBIDIter ri = knn.iter(); i < k && ri.valid(); ri.advance(), i++) {
+ for (DBIDIter ri = knn.iter(); i < k && ri.valid(); ri.advance()) {
+ if (!includeSelf && DBIDUtil.equal(iter, ri)) {
+ continue;
+ }
Object olabel = lrelation.get(ri);
- if(label == null) {
- if(olabel == null) {
+ if (label == null) {
+ if (olabel == null) {
positive += 1;
}
- }
- else {
- if(label.equals(olabel)) {
+ } else {
+ if (label.equals(olabel)) {
positive += 1;
}
}
final double precision = positive / (double) (i + 1);
mvs[i].put(precision);
+ i++;
}
- if(objloop != null) {
+ if (objloop != null) {
objloop.incrementProcessed(LOG);
}
}
- if(objloop != null) {
+ if (objloop != null) {
objloop.ensureCompleted(LOG);
}
// Collections.sort(results);
// Transform Histogram into a Double Vector array.
- Collection<DoubleVector> res = new ArrayList<DoubleVector>(k);
- for(int i = 0; i < k; i++) {
+ Collection<DoubleVector> res = new ArrayList<>(k);
+ for (int i = 0; i < k; i++) {
DoubleVector row = new DoubleVector(new double[] { mvs[i].getMean(), mvs[i].getSampleStddev() });
res.add(row);
}
- return new HistogramResult<DoubleVector>("Average Precision", "average-precision", res);
+ return new CollectionResult<>("Average Precision", "average-precision", res);
}
@Override
public TypeInformation[] getInputTypeRestriction() {
- return TypeUtil.array(getDistanceFunction().getInputTypeRestriction(), TypeUtil.GUESSED_LABEL);
+ return TypeUtil.array(getDistanceFunction().getInputTypeRestriction(), TypeUtil.CLASSLABEL);
}
@Override
@@ -193,26 +211,36 @@ public class AveragePrecisionAtK<V extends Object, D extends NumberDistance<D, ?
public static final OptionID SEED_ID = new OptionID("avep.sampling-seed", "Random seed for deterministic sampling.");
/**
+ * Parameter to include the query object.
+ */
+ public static final OptionID INCLUDESELF_ID = new OptionID("avep.includeself", "Include the query object in the evaluation.");
+
+ /**
* Neighborhood size.
*/
protected int k = 20;
-
+
/**
* Relative amount of data to sample.
*/
protected double sampling = 1.0;
-
+
/**
* Random sampling seed.
*/
protected Long seed = null;
+ /**
+ * Include query object in evaluation.
+ */
+ protected boolean includeSelf;
+
@Override
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
final IntParameter kP = new IntParameter(K_ID);
kP.addConstraint(new GreaterEqualConstraint(2));
- if(config.grab(kP)) {
+ if (config.grab(kP)) {
k = kP.getValue();
}
final DoubleParameter samplingP = new DoubleParameter(SAMPLING_ID);
@@ -227,11 +255,15 @@ public class AveragePrecisionAtK<V extends Object, D extends NumberDistance<D, ?
if (config.grab(rndP)) {
seed = rndP.getValue();
}
+ final Flag includeP = new Flag(INCLUDESELF_ID);
+ if (config.grab(includeP)) {
+ includeSelf = includeP.isTrue();
+ }
}
@Override
protected AveragePrecisionAtK<V, D> makeInstance() {
- return new AveragePrecisionAtK<V, D>(distanceFunction, k, sampling, seed);
+ return new AveragePrecisionAtK<>(distanceFunction, k, sampling, seed, includeSelf);
}
}
-} \ No newline at end of file
+}
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/DistanceStatisticsWithClasses.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/DistanceStatisticsWithClasses.java
index ebf588b6..3c8e1635 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/DistanceStatisticsWithClasses.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/DistanceStatisticsWithClasses.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.algorithm.statistics;
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
@@ -284,7 +284,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
}
long bnum = inum + onum;
- Collection<DoubleVector> binstat = new ArrayList<DoubleVector>(numbin);
+ Collection<DoubleVector> binstat = new ArrayList<>(numbin);
for (ObjHistogram.Iter<long[]> iter = histogram.iter(); iter.valid(); iter.advance()) {
final long[] value = iter.getValue();
final double icof = (inum == 0) ? 0 : ((double) value[0]) / inum / histogram.getBinsize();
@@ -294,7 +294,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
DoubleVector row = new DoubleVector(new double[] { iter.getCenter(), icof, icaf, ocof, ocaf });
binstat.add(row);
}
- HistogramResult<DoubleVector> result = new HistogramResult<DoubleVector>("Distance Histogram", "distance-histogram", binstat);
+ HistogramResult<DoubleVector> result = new HistogramResult<>("Distance Histogram", "distance-histogram", binstat);
result.addHeader("Absolute minimum distance (abs): " + gminmax.getMin());
result.addHeader("Absolute maximum distance (abs): " + gminmax.getMax());
@@ -319,8 +319,8 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
Random rnd = new Random();
// estimate minimum and maximum.
int k = (int) Math.max(25, Math.pow(relation.size(), 0.2));
- TreeSet<DoubleDBIDPair> minhotset = new TreeSet<DoubleDBIDPair>();
- TreeSet<DoubleDBIDPair> maxhotset = new TreeSet<DoubleDBIDPair>(Collections.reverseOrder());
+ TreeSet<DoubleDBIDPair> minhotset = new TreeSet<>();
+ TreeSet<DoubleDBIDPair> maxhotset = new TreeSet<>(Collections.reverseOrder());
int randomsize = (int) Math.max(25, Math.pow(relation.size(), 0.2));
double rprob = ((double) randomsize) / size;
@@ -336,7 +336,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
maxhotset.add(DBIDUtil.newPair(Double.MIN_VALUE, firstid));
for (; iter.valid(); iter.advance()) {
// generate candidates for min distance.
- ArrayList<DoubleDBIDPair> np = new ArrayList<DoubleDBIDPair>(k * 2 + randomsize * 2);
+ ArrayList<DoubleDBIDPair> np = new ArrayList<>(k * 2 + randomsize * 2);
for (DoubleDBIDPair pair : minhotset) {
// skip the object itself
if (DBIDUtil.equal(iter, pair)) {
@@ -355,7 +355,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
shrinkHeap(minhotset, k);
// generate candidates for max distance.
- ArrayList<DoubleDBIDPair> np2 = new ArrayList<DoubleDBIDPair>(k * 2 + randomsize * 2);
+ ArrayList<DoubleDBIDPair> np2 = new ArrayList<>(k * 2 + randomsize * 2);
for (DoubleDBIDPair pair : minhotset) {
// skip the object itself
if (DBIDUtil.equal(iter, pair)) {
@@ -479,7 +479,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
sampling = samplingF.getValue();
}
- ArrayList<Parameter<?>> exclusive = new ArrayList<Parameter<?>>();
+ ArrayList<Parameter<?>> exclusive = new ArrayList<>();
exclusive.add(exactF);
exclusive.add(samplingF);
config.checkConstraint(new OnlyOneIsAllowedToBeSetGlobalConstraint(exclusive));
@@ -487,7 +487,7 @@ public class DistanceStatisticsWithClasses<O, D extends NumberDistance<D, ?>> ex
@Override
protected DistanceStatisticsWithClasses<O, D> makeInstance() {
- return new DistanceStatisticsWithClasses<O, D>(distanceFunction, numbin, exact, sampling);
+ return new DistanceStatisticsWithClasses<>(distanceFunction, numbin, exact, sampling);
}
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/EvaluateRankingQuality.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/EvaluateRankingQuality.java
index 1643d378..76e5ef66 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/EvaluateRankingQuality.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/EvaluateRankingQuality.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.algorithm.statistics;
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
@@ -41,22 +41,24 @@ import de.lmu.ifi.dbs.elki.database.Database;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair;
+import de.lmu.ifi.dbs.elki.database.ids.distance.KNNList;
import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery;
import de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distanceresultlist.KNNResult;
import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance;
import de.lmu.ifi.dbs.elki.evaluation.roc.ROC;
import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress;
import de.lmu.ifi.dbs.elki.math.MathUtil;
+import de.lmu.ifi.dbs.elki.math.MeanVariance;
import de.lmu.ifi.dbs.elki.math.linearalgebra.CovarianceMatrix;
import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix;
import de.lmu.ifi.dbs.elki.math.linearalgebra.Vector;
import de.lmu.ifi.dbs.elki.result.CollectionResult;
import de.lmu.ifi.dbs.elki.result.HistogramResult;
import de.lmu.ifi.dbs.elki.utilities.datastructures.histogram.MeanVarianceStaticHistogram;
+import de.lmu.ifi.dbs.elki.utilities.datastructures.histogram.ObjHistogram;
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.OptionID;
@@ -126,8 +128,8 @@ public class EvaluateRankingQuality<V extends NumberVector<?>, D extends NumberD
Collection<Cluster<Model>> split = (new ByLabelOrAllInOneClustering()).run(database).getAllClusters();
// Compute cluster averages and covariance matrix
- HashMap<Cluster<?>, Vector> averages = new HashMap<Cluster<?>, Vector>(split.size());
- HashMap<Cluster<?>, Matrix> covmats = new HashMap<Cluster<?>, Matrix>(split.size());
+ HashMap<Cluster<?>, Vector> averages = new HashMap<>(split.size());
+ HashMap<Cluster<?>, Matrix> covmats = new HashMap<>(split.size());
for (Cluster<?> clus : split) {
CovarianceMatrix covmat = CovarianceMatrix.make(relation, clus.getIDs());
averages.put(clus, covmat.getMeanVector());
@@ -143,7 +145,7 @@ public class EvaluateRankingQuality<V extends NumberVector<?>, D extends NumberD
// sort neighbors
for (Cluster<?> clus : split) {
- ArrayList<DoubleDBIDPair> cmem = new ArrayList<DoubleDBIDPair>(clus.size());
+ ArrayList<DoubleDBIDPair> cmem = new ArrayList<>(clus.size());
Vector av = averages.get(clus);
Matrix covm = covmats.get(clus);
@@ -154,7 +156,7 @@ public class EvaluateRankingQuality<V extends NumberVector<?>, D extends NumberD
Collections.sort(cmem);
for (int ind = 0; ind < cmem.size(); ind++) {
- KNNResult<D> knn = knnQuery.getKNNForDBID(cmem.get(ind), relation.size());
+ KNNList<D> knn = knnQuery.getKNNForDBID(cmem.get(ind), relation.size());
double result = ROC.computeROCAUCDistanceResult(relation.size(), clus, knn);
hist.put(((double) ind) / clus.size(), result);
@@ -170,12 +172,12 @@ public class EvaluateRankingQuality<V extends NumberVector<?>, D extends NumberD
// Collections.sort(results);
// Transform Histogram into a Double Vector array.
- Collection<DoubleVector> res = new ArrayList<DoubleVector>(relation.size());
- for (MeanVarianceStaticHistogram.Iter iter = hist.iter(); iter.valid(); iter.advance()) {
+ Collection<DoubleVector> res = new ArrayList<>(relation.size());
+ for (ObjHistogram.Iter<MeanVariance> iter = hist.iter(); iter.valid(); iter.advance()) {
DoubleVector row = new DoubleVector(new double[] { iter.getCenter(), iter.getValue().getCount(), iter.getValue().getMean(), iter.getValue().getSampleVariance() });
res.add(row);
}
- return new HistogramResult<DoubleVector>("Ranking Quality Histogram", "ranking-histogram", res);
+ return new HistogramResult<>("Ranking Quality Histogram", "ranking-histogram", res);
}
@Override
@@ -213,7 +215,7 @@ public class EvaluateRankingQuality<V extends NumberVector<?>, D extends NumberD
@Override
protected EvaluateRankingQuality<V, D> makeInstance() {
- return new EvaluateRankingQuality<V, D>(distanceFunction, numbins);
+ return new EvaluateRankingQuality<>(distanceFunction, numbins);
}
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/RankingQualityHistogram.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/RankingQualityHistogram.java
index 6d8167a5..58018029 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/RankingQualityHistogram.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/RankingQualityHistogram.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.algorithm.statistics;
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
@@ -35,11 +35,11 @@ import de.lmu.ifi.dbs.elki.data.type.TypeInformation;
import de.lmu.ifi.dbs.elki.data.type.TypeUtil;
import de.lmu.ifi.dbs.elki.database.Database;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
+import de.lmu.ifi.dbs.elki.database.ids.distance.KNNList;
import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery;
import de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distanceresultlist.KNNResult;
import de.lmu.ifi.dbs.elki.distance.distancevalue.NumberDistance;
import de.lmu.ifi.dbs.elki.evaluation.roc.ROC;
import de.lmu.ifi.dbs.elki.logging.Logging;
@@ -126,7 +126,7 @@ public class RankingQualityHistogram<O, D extends NumberDistance<D, ?>> extends
// sort neighbors
for (Cluster<?> clus : split) {
for (DBIDIter iter = clus.getIDs().iter(); iter.valid(); iter.advance()) {
- KNNResult<D> knn = knnQuery.getKNNForDBID(iter, relation.size());
+ KNNList<D> knn = knnQuery.getKNNForDBID(iter, relation.size());
double result = ROC.computeROCAUCDistanceResult(relation.size(), clus, knn);
mv.put(result);
@@ -142,12 +142,12 @@ public class RankingQualityHistogram<O, D extends NumberDistance<D, ?>> extends
}
// Transform Histogram into a Double Vector array.
- Collection<DoubleVector> res = new ArrayList<DoubleVector>(relation.size());
+ Collection<DoubleVector> res = new ArrayList<>(relation.size());
for (DoubleStaticHistogram.Iter iter = hist.iter(); iter.valid(); iter.advance()) {
DoubleVector row = new DoubleVector(new double[] { iter.getCenter(), iter.getValue() });
res.add(row);
}
- HistogramResult<DoubleVector> result = new HistogramResult<DoubleVector>("Ranking Quality Histogram", "ranking-histogram", res);
+ HistogramResult<DoubleVector> result = new HistogramResult<>("Ranking Quality Histogram", "ranking-histogram", res);
result.addHeader("Mean: " + mv.getMean() + " Variance: " + mv.getSampleVariance());
return result;
}
@@ -187,7 +187,7 @@ public class RankingQualityHistogram<O, D extends NumberDistance<D, ?>> extends
@Override
protected RankingQualityHistogram<O, D> makeInstance() {
- return new RankingQualityHistogram<O, D>(distanceFunction, numbins);
+ return new RankingQualityHistogram<>(distanceFunction, numbins);
}
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/package-info.java b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/package-info.java
index e706d586..8e566101 100644
--- a/src/de/lmu/ifi/dbs/elki/algorithm/statistics/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/statistics/package-info.java
@@ -8,7 +8,7 @@
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