diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/index/preprocessed/preference')
5 files changed, 32 insertions, 27 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java index 56b09dba..dd43e027 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/AbstractPreferenceVectorIndex.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.index.preprocessed.preference; 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 @@ -50,15 +50,10 @@ public abstract class AbstractPreferenceVectorIndex<NV extends NumberVector<?>> super(relation); } - /** - * Preprocessing step. - */ - protected abstract void preprocess(); - @Override public BitSet getPreferenceVector(DBIDRef objid) { if(storage == null) { - preprocess(); + initialize(); } return storage.get(objid); } diff --git a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java index 2b02e7d6..1d1662a7 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/DiSHPreferenceVectorIndex.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.index.preprocessed.preference; 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 @@ -44,13 +44,13 @@ 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.ModifiableDBIDs; +import de.lmu.ifi.dbs.elki.database.ids.distance.DistanceDBIDList; import de.lmu.ifi.dbs.elki.database.query.distance.PrimitiveDistanceQuery; import de.lmu.ifi.dbs.elki.database.query.range.RangeQuery; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; import de.lmu.ifi.dbs.elki.datasource.bundle.SingleObjectBundle; import de.lmu.ifi.dbs.elki.distance.distancefunction.subspace.DimensionSelectingDistanceFunction; -import de.lmu.ifi.dbs.elki.distance.distanceresultlist.DistanceDBIDResult; import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress; @@ -131,7 +131,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra } @Override - protected void preprocess() { + public void initialize() { if(relation == null || relation.size() == 0) { throw new IllegalArgumentException(ExceptionMessages.DATABASE_EMPTY); } @@ -172,7 +172,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra // determine neighbors in each dimension ModifiableDBIDs[] allNeighbors = new ModifiableDBIDs[dim]; for(int d = 0; d < dim; d++) { - DistanceDBIDResult<DoubleDistance> qrList = rangeQueries[d].getRangeForDBID(it, epsilon[d]); + DistanceDBIDList<DoubleDistance> qrList = rangeQueries[d].getRangeForDBID(it, epsilon[d]); allNeighbors[d] = DBIDUtil.newHashSet(qrList); } @@ -249,7 +249,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra // database for apriori UpdatableDatabase apriori_db = new HashmapDatabase(); - SimpleTypeInformation<?> bitmeta = new VectorFieldTypeInformation<BitVector>(BitVector.class, dimensionality); + SimpleTypeInformation<?> bitmeta = new VectorFieldTypeInformation<>(BitVector.class, dimensionality); for(DBIDIter it = relation.iterDBIDs(); it.valid(); it.advance()) { Bit[] bits = new Bit[dimensionality]; boolean allFalse = true; @@ -311,7 +311,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra int dimensionality = neighborIDs.length; BitSet preferenceVector = new BitSet(dimensionality); - Map<Integer, ModifiableDBIDs> candidates = new HashMap<Integer, ModifiableDBIDs>(dimensionality); + Map<Integer, ModifiableDBIDs> candidates = new HashMap<>(dimensionality); for(int i = 0; i < dimensionality; i++) { ModifiableDBIDs s_i = neighborIDs[i]; if(s_i.size() > minpts) { @@ -409,7 +409,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra Class<RangeQuery<V, DoubleDistance>> rqcls = ClassGenericsUtil.uglyCastIntoSubclass(RangeQuery.class); RangeQuery<V, DoubleDistance>[] rangeQueries = ClassGenericsUtil.newArrayOfNull(dimensionality, rqcls); for(int d = 0; d < dimensionality; d++) { - rangeQueries[d] = relation.getDatabase().getRangeQuery(new PrimitiveDistanceQuery<V, DoubleDistance>(relation, new DimensionSelectingDistanceFunction(d))); + rangeQueries[d] = relation.getDatabase().getRangeQuery(new PrimitiveDistanceQuery<>(relation, new DimensionSelectingDistanceFunction(d))); } return rangeQueries; } @@ -429,6 +429,11 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra return "dish-pref"; } + @Override + public void logStatistics() { + // No statistics to log. + } + /** * Factory class. * @@ -532,7 +537,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra @Override public DiSHPreferenceVectorIndex<V> instantiate(Relation<V> relation) { - return new DiSHPreferenceVectorIndex<V>(relation, epsilon, minpts, strategy); + return new DiSHPreferenceVectorIndex<>(relation, epsilon, minpts, strategy); } /** @@ -578,7 +583,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra // parameter epsilon // todo: constraint auf positive werte - List<Double> defaultEps = new ArrayList<Double>(); + List<Double> defaultEps = new ArrayList<>(); defaultEps.add(DEFAULT_EPSILON.doubleValue()); final DoubleListParameter epsilonP = new DoubleListParameter(EPSILON_ID, true); epsilonP.setDefaultValue(defaultEps); @@ -595,7 +600,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra } // parameter strategy - final EnumParameter<Strategy> strategyP = new EnumParameter<Strategy>(STRATEGY_ID, Strategy.class, DEFAULT_STRATEGY); + final EnumParameter<Strategy> strategyP = new EnumParameter<>(STRATEGY_ID, Strategy.class, DEFAULT_STRATEGY); if(config.grab(strategyP)) { strategy = strategyP.getValue(); } @@ -603,7 +608,7 @@ public class DiSHPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra @Override protected Factory<V> makeInstance() { - return new Factory<V>(epsilon, minpts, strategy); + return new Factory<>(epsilon, minpts, strategy); } } } diff --git a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java index fd6aa0bf..e5dcf2f4 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/HiSCPreferenceVectorIndex.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.index.preprocessed.preference; 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 @@ -34,11 +34,11 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; 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.knn.KNNQuery; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.database.relation.RelationUtil; -import de.lmu.ifi.dbs.elki.distance.distancefunction.EuclideanDistanceFunction; -import de.lmu.ifi.dbs.elki.distance.distanceresultlist.KNNResult; +import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.EuclideanDistanceFunction; import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.logging.progress.FiniteProgress; @@ -97,7 +97,7 @@ public class HiSCPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra } @Override - protected void preprocess() { + public void initialize() { if (relation == null || relation.size() <= 0) { throw new IllegalArgumentException(ExceptionMessages.DATABASE_EMPTY); } @@ -118,7 +118,7 @@ public class HiSCPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra msg.append("\n knns: "); } - KNNResult<DoubleDistance> knns = knnQuery.getKNNForDBID(it, k); + KNNList<DoubleDistance> knns = knnQuery.getKNNForDBID(it, k); BitSet preferenceVector = determinePreferenceVector(relation, it, knns, msg); storage.put(it, preferenceVector); @@ -190,6 +190,11 @@ public class HiSCPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra return "hisc-pref"; } + @Override + public void logStatistics() { + // No statistics to log. + } + /** * Factory class. * @@ -261,7 +266,7 @@ public class HiSCPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra } else { usek = k; } - return new HiSCPreferenceVectorIndex<V>(relation, alpha, usek); + return new HiSCPreferenceVectorIndex<>(relation, alpha, usek); } /** @@ -302,7 +307,7 @@ public class HiSCPreferenceVectorIndex<V extends NumberVector<?>> extends Abstra @Override protected Factory<V> makeInstance() { - return new Factory<V>(alpha, k); + return new Factory<>(alpha, k); } } } diff --git a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java index a212c2cd..87a9d3dd 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/PreferenceVectorIndex.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.index.preprocessed.preference; 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/index/preprocessed/preference/package-info.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/package-info.java index 69d0855b..e840bfd0 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/package-info.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/preference/package-info.java @@ -5,7 +5,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 |