From a09c3e3314a00002c5e4e49ea2811cb1006d728e Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Mon, 2 Feb 2015 17:23:56 -0500 Subject: [PATCH] Also use between-cluster-distance prune for points. --- src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp b/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp index deb98d1964..d9d56f36ea 100644 --- a/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp +++ b/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp @@ -508,6 +508,16 @@ prunedPoints[index] << ", lastOwner " << lastOwners[index] << ": invalid " prunedCentroids.col(owner) += dataset.col(index); prunedCounts(owner)++; } + else if (upperBounds[index] + clusterDistances[owner] < 0.5 * + interclusterDistances[newFromOldCentroids[owner]]) + { + prunedPoints[index] = true; + upperBounds[index] += clusterDistances[owner]; + lastOwners[index] = owner; + lowerSecondBounds[index] -= clusterDistances[centroids.n_cols]; + prunedCentroids.col(owner) += dataset.col(index); + prunedCounts(owner)++; + } else { prunedPoints[index] = false;