diff --git a/elki-clustering/src/test/java/elki/clustering/consistency/ENFORCETest.java b/elki-clustering/src/test/java/elki/clustering/consistency/ENFORCETest.java index e9e326916c..7d3d91b38b 100644 --- a/elki-clustering/src/test/java/elki/clustering/consistency/ENFORCETest.java +++ b/elki-clustering/src/test/java/elki/clustering/consistency/ENFORCETest.java @@ -27,6 +27,7 @@ import elki.Algorithm; import elki.clustering.AbstractClusterAlgorithmTest; import elki.clustering.dbscan.predicates.MutualNearestNeighborPredicate; +import elki.clustering.dbscan.predicates.NearestNeighborPredicate; import elki.clustering.kmeans.KMeans; import elki.clustering.kmeans.LloydKMeans; import elki.data.Clustering; @@ -59,12 +60,14 @@ public void testKMeansENFORCE() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("1NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("1NN-consistency was not enforced?", 0.998, nn1, 1e-15); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // + .with(NeighborConsistency.Par.PREDICATE_ID, MutualNearestNeighborPredicate.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // .with(MutualNearestNeighborPredicate.Par.KNN_ID, 10) // .build().evaluateClustering(result, rel); @@ -85,10 +88,11 @@ public void testKMeansENFORCENoise() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("1NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("1NN-consistency was not enforced?", 0.9848, nn1, 1e-4); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // diff --git a/elki-clustering/src/test/java/elki/clustering/consistency/FastKMeansCPTest.java b/elki-clustering/src/test/java/elki/clustering/consistency/FastKMeansCPTest.java index 3f747eecb7..033778da69 100644 --- a/elki-clustering/src/test/java/elki/clustering/consistency/FastKMeansCPTest.java +++ b/elki-clustering/src/test/java/elki/clustering/consistency/FastKMeansCPTest.java @@ -26,6 +26,7 @@ import elki.clustering.AbstractClusterAlgorithmTest; import elki.clustering.dbscan.predicates.MutualNearestNeighborPredicate; +import elki.clustering.dbscan.predicates.NearestNeighborPredicate; import elki.clustering.kmeans.KMeans; import elki.data.Clustering; import elki.data.DoubleVector; @@ -58,16 +59,17 @@ public void testFastKMeansCP() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("2NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("2NN-consistency was not enforced?", 0.996, nn1, 1e-15); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // .with(MutualNearestNeighborPredicate.Par.KNN_ID, 10) // .build().evaluateClustering(result, rel); - assertEquals("10NN-consistency not as expected?", 0.964, nn10, 1e-15); + assertEquals("10NN-consistency not as expected?", 0.954, nn10, 1e-15); } @Test @@ -83,10 +85,11 @@ public void testFastKMeansCPNoise() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("1NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("1NN-consistency was not enforced?", 0.9848, nn1, 1e-4); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // diff --git a/elki-clustering/src/test/java/elki/clustering/consistency/KMeansCPTest.java b/elki-clustering/src/test/java/elki/clustering/consistency/KMeansCPTest.java index ff2ab61659..8860ba348f 100644 --- a/elki-clustering/src/test/java/elki/clustering/consistency/KMeansCPTest.java +++ b/elki-clustering/src/test/java/elki/clustering/consistency/KMeansCPTest.java @@ -26,6 +26,7 @@ import elki.clustering.AbstractClusterAlgorithmTest; import elki.clustering.dbscan.predicates.MutualNearestNeighborPredicate; +import elki.clustering.dbscan.predicates.NearestNeighborPredicate; import elki.clustering.kmeans.KMeans; import elki.data.Clustering; import elki.data.DoubleVector; @@ -58,16 +59,17 @@ public void testKMeansCP() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("2NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("2NN-consistency was not enforced?", 0.996, nn1, 1e-15); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // .with(MutualNearestNeighborPredicate.Par.KNN_ID, 10) // .build().evaluateClustering(result, rel); - assertEquals("10NN-consistency not as expected?", 0.964, nn10, 1e-15); + assertEquals("10NN-consistency not as expected?", 0.954, nn10, 1e-15); } @Test @@ -83,10 +85,11 @@ public void testKMeansCPNoise() { Relation rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD); double nn1 = new ELKIBuilder>(NeighborConsistency.class) // - .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // - .with(MutualNearestNeighborPredicate.Par.KNN_ID, 1) // + .with(NeighborConsistency.Par.PREDICATE_ID, NearestNeighborPredicate.class) // + .with(NearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) // + .with(NearestNeighborPredicate.Par.KNN_ID, 1) // .build().evaluateClustering(result, rel); - assertEquals("1NN-consistency was not enforced?", 1.0, nn1, 1e-15); + assertEquals("1NN-consistency was not enforced?", 0.9848, nn1, 1e-4); double nn10 = new ELKIBuilder>(NeighborConsistency.class) // .with(MutualNearestNeighborPredicate.Par.DISTANCE_FUNCTION_ID, SquaredEuclideanDistance.STATIC) //