summaryrefslogtreecommitdiff
path: root/test/de/lmu/ifi/dbs/elki/algorithm
diff options
context:
space:
mode:
Diffstat (limited to 'test/de/lmu/ifi/dbs/elki/algorithm')
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/AbstractSimpleAlgorithmTest.java6
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/TestKNNJoin.java18
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDBSCANResults.java16
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDeLiCluResults.java2
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestEMResults.java8
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java8
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java8
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/kmeans/TestKMeansResults.java6
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestP3C.java84
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestPreDeConResults.java2
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestABOD.java10
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestFastABOD.java60
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestLBABOD.java62
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestOnlineLOF.java2
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/outlier/subspace/TestSOD.java2
15 files changed, 250 insertions, 44 deletions
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/AbstractSimpleAlgorithmTest.java b/test/de/lmu/ifi/dbs/elki/algorithm/AbstractSimpleAlgorithmTest.java
index 8b0507f0..3e260e8e 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/AbstractSimpleAlgorithmTest.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/AbstractSimpleAlgorithmTest.java
@@ -97,7 +97,7 @@ public abstract class AbstractSimpleAlgorithmTest {
*/
protected <T> Database makeSimpleDatabase(String filename, int expectedSize, ListParameterization params, Class<?>[] filters) {
org.junit.Assert.assertTrue("Test data set not found: " + filename, (new File(filename)).exists());
- params.addParameter(FileBasedDatabaseConnection.INPUT_ID, filename);
+ params.addParameter(FileBasedDatabaseConnection.Parameterizer.INPUT_ID, filename);
List<Class<?>> filterlist = new ArrayList<>();
filterlist.add(FixedDBIDsFilter.class);
@@ -106,8 +106,8 @@ public abstract class AbstractSimpleAlgorithmTest {
filterlist.add(filter);
}
}
- params.addParameter(FileBasedDatabaseConnection.FILTERS_ID, filterlist);
- params.addParameter(FixedDBIDsFilter.IDSTART_ID, 1);
+ params.addParameter(FileBasedDatabaseConnection.Parameterizer.FILTERS_ID, filterlist);
+ params.addParameter(FixedDBIDsFilter.Parameterizer.IDSTART_ID, 1);
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, params);
testParameterizationOk(params);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/TestKNNJoin.java b/test/de/lmu/ifi/dbs/elki/algorithm/TestKNNJoin.java
index 3d8ef366..19509350 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/TestKNNJoin.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/TestKNNJoin.java
@@ -80,10 +80,10 @@ public class TestKNNJoin implements JUnit4Test {
@Test
public void testLinearScan() {
ListParameterization inputparams = new ListParameterization();
- inputparams.addParameter(FileBasedDatabaseConnection.INPUT_ID, dataset);
+ inputparams.addParameter(FileBasedDatabaseConnection.Parameterizer.INPUT_ID, dataset);
List<Class<?>> filters = Arrays.asList(new Class<?>[] { FixedDBIDsFilter.class });
- inputparams.addParameter(FileBasedDatabaseConnection.FILTERS_ID, filters);
- inputparams.addParameter(FixedDBIDsFilter.IDSTART_ID, 1);
+ inputparams.addParameter(FileBasedDatabaseConnection.Parameterizer.FILTERS_ID, filters);
+ inputparams.addParameter(FixedDBIDsFilter.Parameterizer.IDSTART_ID, 1);
// get database
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, inputparams);
@@ -130,7 +130,7 @@ public class TestKNNJoin implements JUnit4Test {
@Test
public void testKNNJoinRtreeMini() {
ListParameterization spatparams = new ListParameterization();
- spatparams.addParameter(StaticArrayDatabase.INDEX_ID, RStarTreeFactory.class);
+ spatparams.addParameter(StaticArrayDatabase.Parameterizer.INDEX_ID, RStarTreeFactory.class);
spatparams.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 200);
doKNNJoin(spatparams);
@@ -144,7 +144,7 @@ public class TestKNNJoin implements JUnit4Test {
@Test
public void testKNNJoinRtreeMaxi() {
ListParameterization spatparams = new ListParameterization();
- spatparams.addParameter(StaticArrayDatabase.INDEX_ID, RStarTreeFactory.class);
+ spatparams.addParameter(StaticArrayDatabase.Parameterizer.INDEX_ID, RStarTreeFactory.class);
spatparams.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 2000);
doKNNJoin(spatparams);
@@ -158,7 +158,7 @@ public class TestKNNJoin implements JUnit4Test {
@Test
public void testKNNJoinDeLiCluTreeMini() {
ListParameterization spatparams = new ListParameterization();
- spatparams.addParameter(StaticArrayDatabase.INDEX_ID, DeLiCluTreeFactory.class);
+ spatparams.addParameter(StaticArrayDatabase.Parameterizer.INDEX_ID, DeLiCluTreeFactory.class);
spatparams.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 200);
doKNNJoin(spatparams);
@@ -171,10 +171,10 @@ public class TestKNNJoin implements JUnit4Test {
* @throws ParameterException
*/
void doKNNJoin(ListParameterization inputparams) {
- inputparams.addParameter(FileBasedDatabaseConnection.INPUT_ID, dataset);
+ inputparams.addParameter(FileBasedDatabaseConnection.Parameterizer.INPUT_ID, dataset);
List<Class<?>> filters = Arrays.asList(new Class<?>[] { FixedDBIDsFilter.class });
- inputparams.addParameter(FileBasedDatabaseConnection.FILTERS_ID, filters);
- inputparams.addParameter(FixedDBIDsFilter.IDSTART_ID, 1);
+ inputparams.addParameter(FileBasedDatabaseConnection.Parameterizer.FILTERS_ID, filters);
+ inputparams.addParameter(FixedDBIDsFilter.Parameterizer.IDSTART_ID, 1);
// get database
Database db = ClassGenericsUtil.parameterizeOrAbort(StaticArrayDatabase.class, inputparams);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDBSCANResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDBSCANResults.java
index 714f345c..34dd2e3d 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDBSCANResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDBSCANResults.java
@@ -60,8 +60,8 @@ public class TestDBSCANResults extends AbstractSimpleAlgorithmTest implements JU
// setup algorithm
ListParameterization params = new ListParameterization();
- params.addParameter(DBSCAN.EPSILON_ID, 0.04);
- params.addParameter(DBSCAN.MINPTS_ID, 20);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0.04);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 20);
DBSCAN<DoubleVector, DoubleDistance> dbscan = ClassGenericsUtil.parameterizeOrAbort(DBSCAN.class, params);
testParameterizationOk(params);
@@ -84,8 +84,8 @@ public class TestDBSCANResults extends AbstractSimpleAlgorithmTest implements JU
// Setup algorithm
ListParameterization params = new ListParameterization();
- params.addParameter(DBSCAN.EPSILON_ID, 11.5);
- params.addParameter(DBSCAN.MINPTS_ID, 120);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 11.5);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 120);
DBSCAN<DoubleVector, DoubleDistance> dbscan = ClassGenericsUtil.parameterizeOrAbort(DBSCAN.class, params);
testParameterizationOk(params);
@@ -107,8 +107,8 @@ public class TestDBSCANResults extends AbstractSimpleAlgorithmTest implements JU
// setup algorithm
ListParameterization params = new ListParameterization();
- params.addParameter(DBSCAN.EPSILON_ID, 0.04);
- params.addParameter(DBSCAN.MINPTS_ID, 20);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0.04);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 20);
GeneralizedDBSCAN dbscan = ClassGenericsUtil.parameterizeOrAbort(GeneralizedDBSCAN.class, params);
testParameterizationOk(params);
@@ -131,8 +131,8 @@ public class TestDBSCANResults extends AbstractSimpleAlgorithmTest implements JU
// Setup algorithm
ListParameterization params = new ListParameterization();
- params.addParameter(DBSCAN.EPSILON_ID, 11.5);
- params.addParameter(DBSCAN.MINPTS_ID, 120);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 11.5);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 120);
GeneralizedDBSCAN dbscan = ClassGenericsUtil.parameterizeOrAbort(GeneralizedDBSCAN.class, params);
testParameterizationOk(params);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDeLiCluResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDeLiCluResults.java
index 1323c5fa..b70c0f67 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDeLiCluResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestDeLiCluResults.java
@@ -62,7 +62,7 @@ public class TestDeLiCluResults extends AbstractSimpleAlgorithmTest implements J
public void testDeLiCluResults() {
ListParameterization indexparams = new ListParameterization();
// We need a special index for this algorithm:
- indexparams.addParameter(StaticArrayDatabase.INDEX_ID, DeLiCluTreeFactory.class);
+ indexparams.addParameter(StaticArrayDatabase.Parameterizer.INDEX_ID, DeLiCluTreeFactory.class);
indexparams.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 1000);
Database db = makeSimpleDatabase(UNITTEST + "hierarchical-2d.ascii", 710, indexparams, null);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestEMResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestEMResults.java
index 421141a3..065307be 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestEMResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/TestEMResults.java
@@ -57,14 +57,14 @@ public class TestEMResults extends AbstractSimpleAlgorithmTest implements JUnit4
// Setup algorithm
ListParameterization params = new ListParameterization();
- params.addParameter(KMeans.SEED_ID, 1);
- params.addParameter(EM.K_ID, 5);
+ params.addParameter(KMeans.SEED_ID, 0);
+ params.addParameter(EM.Parameterizer.K_ID, 6);
EM<DoubleVector> em = ClassGenericsUtil.parameterizeOrAbort(EM.class, params);
testParameterizationOk(params);
// run EM on database
Clustering<EMModel<DoubleVector>> result = em.run(db);
- testFMeasure(db, result, 0.961587);
- testClusterSizes(result, new int[] { 5, 91, 98, 200, 316 });
+ testFMeasure(db, result, 0.7551098);
+ testClusterSizes(result, new int[] { 50, 99, 102, 120, 141, 198 });
}
} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java
index 8af036bf..94c59557 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java
@@ -66,8 +66,8 @@ public class TestCOPACResults extends AbstractSimpleAlgorithmTest implements JUn
// these parameters are not picked too smartly - room for improvement.
ListParameterization params = new ListParameterization();
params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- params.addParameter(DBSCAN.EPSILON_ID, 0.02);
- params.addParameter(DBSCAN.MINPTS_ID, 50);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0.02);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 50);
params.addParameter(COPAC.PREPROCESSOR_ID, KNNQueryFilteredPCAIndex.Factory.class);
params.addParameter(KNNQueryFilteredPCAIndex.Factory.K_ID, 15);
@@ -94,8 +94,8 @@ public class TestCOPACResults extends AbstractSimpleAlgorithmTest implements JUn
// Setup algorithm
ListParameterization params = new ListParameterization();
params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- params.addParameter(DBSCAN.EPSILON_ID, 0.5);
- params.addParameter(DBSCAN.MINPTS_ID, 20);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0.5);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 20);
params.addParameter(COPAC.PREPROCESSOR_ID, KNNQueryFilteredPCAIndex.Factory.class);
params.addParameter(KNNQueryFilteredPCAIndex.Factory.K_ID, 45);
// PCA
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java
index 92a61e5e..76e8cca2 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java
@@ -66,8 +66,8 @@ public class TestERiCResults extends AbstractSimpleAlgorithmTest implements JUni
// ERiC
ListParameterization params = new ListParameterization();
params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- params.addParameter(DBSCAN.MINPTS_ID, 30);
- params.addParameter(DBSCAN.EPSILON_ID, 0);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 30);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0);
// ERiC Distance function in DBSCAN:
params.addParameter(COPAC.PARTITION_DISTANCE_ID, ERiCDistanceFunction.class);
params.addParameter(ERiCDistanceFunction.DELTA_ID, 0.20);
@@ -104,8 +104,8 @@ public class TestERiCResults extends AbstractSimpleAlgorithmTest implements JUni
ListParameterization params = new ListParameterization();
// ERiC
params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- params.addParameter(DBSCAN.MINPTS_ID, 15);
- params.addParameter(DBSCAN.EPSILON_ID, 0);
+ params.addParameter(DBSCAN.Parameterizer.MINPTS_ID, 15);
+ params.addParameter(DBSCAN.Parameterizer.EPSILON_ID, 0);
// ERiC Distance function in DBSCAN:
params.addParameter(COPAC.PARTITION_DISTANCE_ID, ERiCDistanceFunction.class);
params.addParameter(ERiCDistanceFunction.DELTA_ID, 1.0);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/kmeans/TestKMeansResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/kmeans/TestKMeansResults.java
index 3419352a..3601b977 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/kmeans/TestKMeansResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/kmeans/TestKMeansResults.java
@@ -61,7 +61,7 @@ public class TestKMeansResults extends AbstractSimpleAlgorithmTest implements JU
// Setup algorithm
ListParameterization params = new ListParameterization();
params.addParameter(KMeans.K_ID, 5);
- params.addParameter(KMeans.INIT_ID, FirstKInitialMeans.class);
+ params.addParameter(KMeans.SEED_ID, 2);
AbstractKMeans<DoubleVector, DoubleDistance, ?> kmeans = ClassGenericsUtil.parameterizeOrAbort(KMeansLloyd.class, params);
testParameterizationOk(params);
@@ -84,7 +84,7 @@ public class TestKMeansResults extends AbstractSimpleAlgorithmTest implements JU
// Setup algorithm
ListParameterization params = new ListParameterization();
params.addParameter(KMeans.K_ID, 5);
- params.addParameter(KMeans.INIT_ID, FirstKInitialMeans.class);
+ params.addParameter(KMeans.SEED_ID, 2);
AbstractKMeans<DoubleVector, DoubleDistance, ?> kmeans = ClassGenericsUtil.parameterizeOrAbort(KMeansMacQueen.class, params);
testParameterizationOk(params);
@@ -107,7 +107,7 @@ public class TestKMeansResults extends AbstractSimpleAlgorithmTest implements JU
// Setup algorithm
ListParameterization params = new ListParameterization();
params.addParameter(KMeans.K_ID, 5);
- params.addParameter(KMeans.INIT_ID, FirstKInitialMeans.class);
+ params.addParameter(KMeans.SEED_ID, 2);
AbstractKMeans<DoubleVector, DoubleDistance, ?> kmedians = ClassGenericsUtil.parameterizeOrAbort(KMediansLloyd.class, params);
testParameterizationOk(params);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestP3C.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestP3C.java
new file mode 100644
index 00000000..4d02351f
--- /dev/null
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestP3C.java
@@ -0,0 +1,84 @@
+package de.lmu.ifi.dbs.elki.algorithm.clustering.subspace;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2012
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import org.junit.Test;
+
+import de.lmu.ifi.dbs.elki.JUnit4Test;
+import de.lmu.ifi.dbs.elki.algorithm.AbstractSimpleAlgorithmTest;
+import de.lmu.ifi.dbs.elki.data.Clustering;
+import de.lmu.ifi.dbs.elki.data.DoubleVector;
+import de.lmu.ifi.dbs.elki.data.model.SubspaceModel;
+import de.lmu.ifi.dbs.elki.database.Database;
+import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
+
+/**
+ * Test P3C on a simple test data set.
+ *
+ * Note: both data sets are really beneficial for P3C, and with reasonably
+ * chosen parameters, it works perfectly.
+ *
+ * @author Erich Schubert
+ */
+public class TestP3C extends AbstractSimpleAlgorithmTest implements JUnit4Test {
+ /**
+ * Run P3C with fixed parameters and compare the result to a golden standard.
+ */
+ @Test
+ public void testP3CSimple() {
+ Database db = makeSimpleDatabase(UNITTEST + "subspace-simple.csv", 600);
+
+ ListParameterization params = new ListParameterization();
+
+ // setup algorithm
+ P3C<DoubleVector> p3c = ClassGenericsUtil.parameterizeOrAbort(P3C.class, params);
+ testParameterizationOk(params);
+
+ // run P3C on database
+ Clustering<SubspaceModel<DoubleVector>> result = p3c.run(db);
+
+ testFMeasure(db, result, 1.0);
+ testClusterSizes(result, new int[] { 200, 400 });
+ }
+
+ /**
+ * Run P3C with fixed parameters and compare the result to a golden standard.
+ */
+ @Test
+ public void testP3COverlapping() {
+ Database db = makeSimpleDatabase(UNITTEST + "subspace-overlapping-3-4d.ascii", 850);
+
+ // Setup algorithm
+ ListParameterization params = new ListParameterization();
+ params.addParameter(P3C.Parameterizer.ALPHA_THRESHOLD_ID, 0.01);
+ P3C<DoubleVector> p3c = ClassGenericsUtil.parameterizeOrAbort(P3C.class, params);
+ testParameterizationOk(params);
+
+ // run P3C on database
+ Clustering<SubspaceModel<DoubleVector>> result = p3c.run(db);
+ testFMeasure(db, result, 1.0);
+ testClusterSizes(result, new int[] { 150, 300, 400 });
+ }
+} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestPreDeConResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestPreDeConResults.java
index a07c71a1..d00a703f 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestPreDeConResults.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/subspace/TestPreDeConResults.java
@@ -58,7 +58,7 @@ public class TestPreDeConResults extends AbstractSimpleAlgorithmTest implements
public void testPreDeConResults() {
// Additional input parameters
ListParameterization inp = new ListParameterization();
- inp.addParameter(ClassLabelFilter.CLASS_LABEL_INDEX_ID, 1);
+ inp.addParameter(ClassLabelFilter.Parameterizer.CLASS_LABEL_INDEX_ID, 1);
Class<?>[] filters = new Class<?>[] { ClassLabelFilter.class };
Database db = makeSimpleDatabase(UNITTEST + "axis-parallel-subspace-clusters-6d.csv.gz", 2500, inp, filters);
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestABOD.java b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestABOD.java
index 3490ce9a..e213b54e 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestABOD.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestABOD.java
@@ -25,7 +25,6 @@ package de.lmu.ifi.dbs.elki.algorithm.outlier;
import org.junit.Test;
-import de.lmu.ifi.dbs.elki.JUnit4Test;
import de.lmu.ifi.dbs.elki.algorithm.AbstractSimpleAlgorithmTest;
import de.lmu.ifi.dbs.elki.data.DoubleVector;
import de.lmu.ifi.dbs.elki.database.Database;
@@ -36,16 +35,17 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParamet
/**
* Tests the ABOD algorithm.
*
+ * Note: we don't implement JUnit4Test, as this test is slow.
+ *
* @author Lucia Cichella
*/
-public class TestABOD extends AbstractSimpleAlgorithmTest implements JUnit4Test {
+public class TestABOD extends AbstractSimpleAlgorithmTest {
@Test
public void testABOD() {
Database db = makeSimpleDatabase(UNITTEST + "outlier-3d-3clusters.ascii", 960);
// Parameterization
ListParameterization params = new ListParameterization();
- params.addParameter(ABOD.K_ID, 5);
// setup Algorithm
ABOD<DoubleVector> abod = ClassGenericsUtil.parameterizeOrAbort(ABOD.class, params);
@@ -54,7 +54,7 @@ public class TestABOD extends AbstractSimpleAlgorithmTest implements JUnit4Test
// run ABOD on database
OutlierResult result = abod.run(db);
- testSingleScore(result, 945, 3.7108897864090475E-4);
- testAUC(db, "Noise", result, 0.9638148148148148);
+ testAUC(db, "Noise", result, 0.94887037037037);
+ testSingleScore(result, 945, 1.88108120738508E-4);
}
} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestFastABOD.java b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestFastABOD.java
new file mode 100644
index 00000000..11977af6
--- /dev/null
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestFastABOD.java
@@ -0,0 +1,60 @@
+package de.lmu.ifi.dbs.elki.algorithm.outlier;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2012
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import org.junit.Test;
+
+import de.lmu.ifi.dbs.elki.JUnit4Test;
+import de.lmu.ifi.dbs.elki.algorithm.AbstractSimpleAlgorithmTest;
+import de.lmu.ifi.dbs.elki.data.DoubleVector;
+import de.lmu.ifi.dbs.elki.database.Database;
+import de.lmu.ifi.dbs.elki.result.outlier.OutlierResult;
+import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
+
+/**
+ * Tests the ABOD algorithm.
+ *
+ * @author Lucia Cichella
+ */
+public class TestFastABOD extends AbstractSimpleAlgorithmTest implements JUnit4Test {
+ @Test
+ public void testFastABOD() {
+ Database db = makeSimpleDatabase(UNITTEST + "outlier-3d-3clusters.ascii", 960);
+
+ // Parameterization
+ ListParameterization params = new ListParameterization();
+ params.addParameter(FastABOD.Parameterizer.K_ID, 5);
+
+ // setup Algorithm
+ FastABOD<DoubleVector> abod = ClassGenericsUtil.parameterizeOrAbort(FastABOD.class, params);
+ testParameterizationOk(params);
+
+ // run ABOD on database
+ OutlierResult result = abod.run(db);
+
+ testAUC(db, "Noise", result, 0.963259259259);
+ testSingleScore(result, 945, 0.68723169783);
+ }
+} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestLBABOD.java b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestLBABOD.java
new file mode 100644
index 00000000..5a1f56f2
--- /dev/null
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/TestLBABOD.java
@@ -0,0 +1,62 @@
+package de.lmu.ifi.dbs.elki.algorithm.outlier;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2012
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import org.junit.Test;
+
+import de.lmu.ifi.dbs.elki.algorithm.AbstractSimpleAlgorithmTest;
+import de.lmu.ifi.dbs.elki.data.DoubleVector;
+import de.lmu.ifi.dbs.elki.database.Database;
+import de.lmu.ifi.dbs.elki.result.outlier.OutlierResult;
+import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
+import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
+
+/**
+ * Tests the LB-ABOD algorithm.
+ *
+ * Note: we don't implement JUnit4Test, as this test is slow.
+ *
+ * @author Lucia Cichella
+ */
+public class TestLBABOD extends AbstractSimpleAlgorithmTest {
+ @Test
+ public void testLBABOD() {
+ Database db = makeSimpleDatabase(UNITTEST + "outlier-3d-3clusters.ascii", 960);
+
+ // Parameterization
+ ListParameterization params = new ListParameterization();
+ params.addParameter(FastABOD.Parameterizer.K_ID, 150);
+ params.addParameter(LBABOD.Parameterizer.L_ID, 10);
+
+ // setup Algorithm
+ LBABOD<DoubleVector> abod = ClassGenericsUtil.parameterizeOrAbort(LBABOD.class, params);
+ testParameterizationOk(params);
+
+ // run ABOD on database
+ OutlierResult result = abod.run(db);
+
+ testAUC(db, "Noise", result, 0.928999999999);
+ testSingleScore(result, 945, 1.88108120738508E-4);
+ }
+} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestOnlineLOF.java b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestOnlineLOF.java
index cd60a58f..889cddce 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestOnlineLOF.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/TestOnlineLOF.java
@@ -152,7 +152,7 @@ public class TestOnlineLOF implements JUnit4Test {
*/
private static UpdatableDatabase getDatabase() {
ListParameterization params = new ListParameterization();
- params.addParameter(FileBasedDatabaseConnection.INPUT_ID, dataset);
+ params.addParameter(FileBasedDatabaseConnection.Parameterizer.INPUT_ID, dataset);
UpdatableDatabase db = ClassGenericsUtil.parameterizeOrAbort(HashmapDatabase.class, params);
params.failOnErrors();
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/subspace/TestSOD.java b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/subspace/TestSOD.java
index c43f2f35..f8f47886 100644
--- a/test/de/lmu/ifi/dbs/elki/algorithm/outlier/subspace/TestSOD.java
+++ b/test/de/lmu/ifi/dbs/elki/algorithm/outlier/subspace/TestSOD.java
@@ -47,7 +47,7 @@ public class TestSOD extends AbstractSimpleAlgorithmTest implements JUnit4Test {
// Parameterization
ListParameterization params = new ListParameterization();
- params.addParameter(SOD.KNN_ID, 25);
+ params.addParameter(SOD.Parameterizer.KNN_ID, 25);
params.addParameter(SharedNearestNeighborPreprocessor.Factory.NUMBER_OF_NEIGHBORS_ID, 19);
// setup Algorithm