summaryrefslogtreecommitdiff
path: root/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation
diff options
context:
space:
mode:
Diffstat (limited to 'test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation')
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCASHResults.java96
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java114
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java130
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestFourCResults.java98
-rw-r--r--test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestORCLUSResults.java98
5 files changed, 0 insertions, 536 deletions
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCASHResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCASHResults.java
deleted file mode 100644
index 62791b68..00000000
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCASHResults.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package de.lmu.ifi.dbs.elki.algorithm.clustering.correlation;
-
-/*
- 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.Model;
-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;
-
-/**
- * Perform a full CASH run, and compare the result with a clustering derived
- * from the data set labels. This test ensures that CASH performance doesn't
- * unexpectedly drop on this data set (and also ensures that the algorithms
- * work, as a side effect).
- *
- * @author Erich Schubert
- * @author Katharina Rausch
- */
-public class TestCASHResults extends AbstractSimpleAlgorithmTest implements JUnit4Test {
- /**
- * Run CASH with fixed parameters and compare the result to a golden standard.
- */
- @Test
- public void testCASHResults() {
- // Input
- Database db = makeSimpleDatabase(UNITTEST + "hierarchical-3d2d1d.csv", 600, new ListParameterization(), null);
-
- // CASH parameters
- ListParameterization params = new ListParameterization();
- params.addParameter(CASH.JITTER_ID, 0.7);
- params.addParameter(CASH.MINPTS_ID, 50);
- params.addParameter(CASH.MAXLEVEL_ID, 25);
- params.addFlag(CASH.ADJUST_ID);
-
- // setup algorithm
- CASH<DoubleVector> cash = ClassGenericsUtil.parameterizeOrAbort(CASH.class, params);
- testParameterizationOk(params);
-
- // run CASH on database
- Clustering<Model> result = cash.run(db);
-
- testFMeasure(db, result, 0.490551); // with hierarchical pairs: 0.64102
- testClusterSizes(result, new int[] { 37, 71, 76, 442 });
- }
-
- /**
- * Run CASH with fixed parameters and compare the result to a golden standard.
- */
- @Test
- public void testCASHEmbedded() {
- // CASH input
- Database db = makeSimpleDatabase(UNITTEST + "correlation-embedded-2-4d.ascii", 600, new ListParameterization(), null);
-
- // CASH parameters
- ListParameterization params = new ListParameterization();
- params.addParameter(CASH.JITTER_ID, 0.7);
- params.addParameter(CASH.MINPTS_ID, 160);
- params.addParameter(CASH.MAXLEVEL_ID, 40);
-
- // setup algorithm
- CASH<DoubleVector> cash = ClassGenericsUtil.parameterizeOrAbort(CASH.class, params);
- testParameterizationOk(params);
-
- // run CASH on database
- Clustering<Model> result = cash.run(db);
- testFMeasure(db, result, 0.443246);
- testClusterSizes(result, new int[] { 169, 196, 235 });
- }
-} \ 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
deleted file mode 100644
index 94c59557..00000000
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestCOPACResults.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package de.lmu.ifi.dbs.elki.algorithm.clustering.correlation;
-
-/*
- 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.algorithm.clustering.DBSCAN;
-import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.DoubleVector;
-import de.lmu.ifi.dbs.elki.data.model.Model;
-import de.lmu.ifi.dbs.elki.database.Database;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.DoubleDistance;
-import de.lmu.ifi.dbs.elki.index.preprocessed.localpca.KNNQueryFilteredPCAIndex;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PCAFilteredRunner;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PCARunner;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PercentageEigenPairFilter;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.WeightedCovarianceMatrixBuilder;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions.ErfcWeight;
-import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
-
-/**
- * Perform a full COPAC run, and compare the result with a clustering derived
- * from the data set labels. This test ensures that COPAC performance doesn't
- * unexpectedly drop on this data set (and also ensures that the algorithms
- * work, as a side effect).
- *
- * @author Erich Schubert
- * @author Katharina Rausch
- */
-public class TestCOPACResults extends AbstractSimpleAlgorithmTest implements JUnit4Test {
- /**
- * Run COPAC with fixed parameters and compare the result to a golden
- * standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testCOPACResults() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-hierarchy.csv", 450);
-
- // 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.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);
-
- COPAC<DoubleVector, DoubleDistance> copac = ClassGenericsUtil.parameterizeOrAbort(COPAC.class, params);
- testParameterizationOk(params);
-
- // run COPAC on database
- Clustering<Model> result = copac.run(db);
-
- testFMeasure(db, result, 0.842521);
- testClusterSizes(result, new int[] { 6, 16, 32, 196, 200 });
- }
-
- /**
- * Run COPAC with fixed parameters and compare the result to a golden
- * standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testCOPACOverlap() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-overlap-3-5d.ascii", 650);
-
- // Setup algorithm
- ListParameterization params = new ListParameterization();
- params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- 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
- params.addParameter(PCARunner.PCA_COVARIANCE_MATRIX, WeightedCovarianceMatrixBuilder.class);
- params.addParameter(WeightedCovarianceMatrixBuilder.WEIGHT_ID, ErfcWeight.class);
- params.addParameter(PCAFilteredRunner.PCA_EIGENPAIR_FILTER, PercentageEigenPairFilter.class);
- params.addParameter(PercentageEigenPairFilter.ALPHA_ID, 0.8);
-
- COPAC<DoubleVector, DoubleDistance> copac = ClassGenericsUtil.parameterizeOrAbort(COPAC.class, params);
- testParameterizationOk(params);
-
- Clustering<Model> result = copac.run(db);
- testFMeasure(db, result, 0.84687864);
- testClusterSizes(result, new int[] { 1, 22, 22, 29, 34, 158, 182, 202 });
- }
-} \ No newline at end of file
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
deleted file mode 100644
index 76e8cca2..00000000
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestERiCResults.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package de.lmu.ifi.dbs.elki.algorithm.clustering.correlation;
-
-/*
- 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.algorithm.clustering.DBSCAN;
-import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.DoubleVector;
-import de.lmu.ifi.dbs.elki.data.model.CorrelationModel;
-import de.lmu.ifi.dbs.elki.database.Database;
-import de.lmu.ifi.dbs.elki.distance.distancefunction.correlation.ERiCDistanceFunction;
-import de.lmu.ifi.dbs.elki.index.preprocessed.localpca.KNNQueryFilteredPCAIndex;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PCAFilteredRunner;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PCARunner;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.PercentageEigenPairFilter;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.RelativeEigenPairFilter;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.WeightedCovarianceMatrixBuilder;
-import de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions.ErfcWeight;
-import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
-
-/**
- * Perform a full ERiC run, and compare the result with a clustering derived
- * from the data set labels. This test ensures that ERiC performance doesn't
- * unexpectedly drop on this data set (and also ensures that the algorithms
- * work, as a side effect).
- *
- * @author Erich Schubert
- * @author Katharina Rausch
- */
-public class TestERiCResults extends AbstractSimpleAlgorithmTest implements JUnit4Test {
- /**
- * Run ERiC with fixed parameters and compare the result to a golden standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testERiCResults() {
- Database db = makeSimpleDatabase(UNITTEST + "hierarchical-3d2d1d.csv", 600);
-
- // ERiC
- ListParameterization params = new ListParameterization();
- params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- 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);
- params.addParameter(ERiCDistanceFunction.TAU_ID, 0.04);
- // Preprocessing via Local PCA:
- params.addParameter(COPAC.PREPROCESSOR_ID, KNNQueryFilteredPCAIndex.Factory.class);
- params.addParameter(KNNQueryFilteredPCAIndex.Factory.K_ID, 50);
- // PCA
- params.addParameter(PCARunner.PCA_COVARIANCE_MATRIX, WeightedCovarianceMatrixBuilder.class);
- params.addParameter(WeightedCovarianceMatrixBuilder.WEIGHT_ID, ErfcWeight.class);
- params.addParameter(PCAFilteredRunner.PCA_EIGENPAIR_FILTER, RelativeEigenPairFilter.class);
- params.addParameter(RelativeEigenPairFilter.EIGENPAIR_FILTER_RALPHA, 1.60);
-
- ERiC<DoubleVector> eric = ClassGenericsUtil.parameterizeOrAbort(ERiC.class, params);
- testParameterizationOk(params);
-
- // run ERiC on database
- Clustering<CorrelationModel<DoubleVector>> result = eric.run(db);
-
- testFMeasure(db, result, 0.714207); // Hierarchical pairs scored: 0.9204825
- testClusterSizes(result, new int[] { 109, 184, 307 });
- }
-
- /**
- * Run ERiC with fixed parameters and compare the result to a golden standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testERiCOverlap() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-overlap-3-5d.ascii", 650);
-
- // Setup algorithm
- ListParameterization params = new ListParameterization();
- // ERiC
- params.addParameter(COPAC.PARTITION_ALGORITHM_ID, DBSCAN.class);
- 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);
- params.addParameter(ERiCDistanceFunction.TAU_ID, 1.0);
- // Preprocessing via Local PCA:
- params.addParameter(COPAC.PREPROCESSOR_ID, KNNQueryFilteredPCAIndex.Factory.class);
- params.addParameter(KNNQueryFilteredPCAIndex.Factory.K_ID, 45);
- // PCA
- params.addParameter(PCARunner.PCA_COVARIANCE_MATRIX, WeightedCovarianceMatrixBuilder.class);
- params.addParameter(WeightedCovarianceMatrixBuilder.WEIGHT_ID, ErfcWeight.class);
- params.addParameter(PCAFilteredRunner.PCA_EIGENPAIR_FILTER, PercentageEigenPairFilter.class);
- params.addParameter(PercentageEigenPairFilter.ALPHA_ID, 0.6);
-
- ERiC<DoubleVector> eric = ClassGenericsUtil.parameterizeOrAbort(ERiC.class, params);
- testParameterizationOk(params);
-
- // run ERiC on database
- Clustering<CorrelationModel<DoubleVector>> result = eric.run(db);
- testFMeasure(db, result, 0.831136946);
- testClusterSizes(result, new int[] { 29, 189, 207, 225 });
- }
-} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestFourCResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestFourCResults.java
deleted file mode 100644
index 8604a5f0..00000000
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestFourCResults.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package de.lmu.ifi.dbs.elki.algorithm.clustering.correlation;
-
-/*
- 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.algorithm.clustering.AbstractProjectedDBSCAN;
-import de.lmu.ifi.dbs.elki.data.Clustering;
-import de.lmu.ifi.dbs.elki.data.DoubleVector;
-import de.lmu.ifi.dbs.elki.data.model.Model;
-import de.lmu.ifi.dbs.elki.database.Database;
-import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
-
-/**
- * Perform a full 4C run, and compare the result with a clustering derived from
- * the data set labels. This test ensures that 4C performance doesn't
- * unexpectedly drop on this data set (and also ensures that the algorithms
- * work, as a side effect).
- *
- * @author Erich Schubert
- * @author Katharina Rausch
- */
-public class TestFourCResults extends AbstractSimpleAlgorithmTest implements JUnit4Test {
- /**
- * Run 4F with fixed parameters and compare the result to a golden standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testFourCResults() {
- Database db = makeSimpleDatabase(UNITTEST + "hierarchical-3d2d1d.csv", 600);
-
- // Setup 4C
- ListParameterization params = new ListParameterization();
- params.addParameter(AbstractProjectedDBSCAN.EPSILON_ID, 0.30);
- params.addParameter(AbstractProjectedDBSCAN.MINPTS_ID, 20);
- params.addParameter(AbstractProjectedDBSCAN.LAMBDA_ID, 5);
-
- FourC<DoubleVector> fourc = ClassGenericsUtil.parameterizeOrAbort(FourC.class, params);
- testParameterizationOk(params);
-
- // run 4C on database
- Clustering<Model> result = fourc.run(db);
-
- testFMeasure(db, result, 0.498048); // Hierarchical pairs scored: 0.79467
- testClusterSizes(result, new int[] { 5, 595 });
- }
-
- /**
- * Run ERiC with fixed parameters and compare the result to a golden standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testFourCOverlap() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-overlap-3-5d.ascii", 650);
-
- // Setup algorithm
- ListParameterization params = new ListParameterization();
- // 4C
- params.addParameter(AbstractProjectedDBSCAN.EPSILON_ID, 1.2);
- params.addParameter(AbstractProjectedDBSCAN.MINPTS_ID, 5);
- params.addParameter(AbstractProjectedDBSCAN.LAMBDA_ID, 3);
-
- FourC<DoubleVector> fourc = ClassGenericsUtil.parameterizeOrAbort(FourC.class, params);
- testParameterizationOk(params);
-
- // run 4C on database
- Clustering<Model> result = fourc.run(db);
- testFMeasure(db, result, 0.48305405);
- testClusterSizes(result, new int[] { 65, 70, 515 });
- }
-} \ No newline at end of file
diff --git a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestORCLUSResults.java b/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestORCLUSResults.java
deleted file mode 100644
index 5cdb09c9..00000000
--- a/test/de/lmu/ifi/dbs/elki/algorithm/clustering/correlation/TestORCLUSResults.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package de.lmu.ifi.dbs.elki.algorithm.clustering.correlation;
-
-/*
- 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.Model;
-import de.lmu.ifi.dbs.elki.database.Database;
-import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
-
-/**
- * Performs a full ORCLUS run, and compares the result with a clustering derived
- * from the data set labels. This test ensures that ORCLUS performance doesn't
- * unexpectedly drop on this data set (and also ensures that the algorithms
- * work, as a side effect).
- *
- * @author Elke Achtert
- * @author Katharina Rausch
- */
-public class TestORCLUSResults extends AbstractSimpleAlgorithmTest implements JUnit4Test {
- /**
- * Run ORCLUS with fixed parameters and compare the result to a golden
- * standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testORCLUSResults() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-hierarchy.csv", 450);
-
- ListParameterization params = new ListParameterization();
- params.addParameter(ORCLUS.Parameterizer.K_ID, 3);
- params.addParameter(ORCLUS.Parameterizer.L_ID, 1);
- params.addParameter(ORCLUS.Parameterizer.SEED_ID, 2);
-
- // setup algorithm
- ORCLUS<DoubleVector> orclus = ClassGenericsUtil.parameterizeOrAbort(ORCLUS.class, params);
- testParameterizationOk(params);
-
- // run ORCLUS on database
- Clustering<Model> result = orclus.run(db);
-
- testFMeasure(db, result, 0.6361108); // Hierarchical pairs scored: 0.789113
- testClusterSizes(result, new int[] { 19, 33, 398 });
- }
-
- /**
- * Run ORCLUS with fixed parameters and compare the result to a golden
- * standard.
- *
- * @throws ParameterException on errors.
- */
- @Test
- public void testORCLUSSkewedDisjoint() {
- Database db = makeSimpleDatabase(UNITTEST + "correlation-skewed-disjoint-3-5d.ascii", 601);
-
- // Setup algorithm
- ListParameterization params = new ListParameterization();
- params.addParameter(ORCLUS.Parameterizer.K_ID, 3);
- params.addParameter(ORCLUS.Parameterizer.L_ID, 4);
- params.addParameter(ORCLUS.Parameterizer.SEED_ID, 9);
-
- ORCLUS<DoubleVector> orclus = ClassGenericsUtil.parameterizeOrAbort(ORCLUS.class, params);
- testParameterizationOk(params);
-
- // run ORCLUS on database
- Clustering<Model> result = orclus.run(db);
- testFMeasure(db, result, 0.8687866);
- testClusterSizes(result, new int[] { 170, 200, 231 });
- }
-} \ No newline at end of file