[mlpack-git] master: Don't accidentally take results before finished. We have to wait until all clusters are pruned, not all except one. (581a4a0)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Mar 12 16:01:45 EDT 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/eddd7167d69b6c88b271ef2e51d1c20e13f1acd8...70342dd8e5c17e0c164cfb8189748671e9c0dd44
>---------------------------------------------------------------
commit 581a4a0deeac979549407fe5e3807ae1c7ea1403
Author: Ryan Curtin <ryan at ratml.org>
Date: Tue Jan 13 15:52:44 2015 -0500
Don't accidentally take results before finished. We have to wait until all clusters are pruned, not all except one.
>---------------------------------------------------------------
581a4a0deeac979549407fe5e3807ae1c7ea1403
.../methods/kmeans/dual_tree_kmeans_rules_impl.hpp | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
index 34df556..3208737 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
@@ -131,9 +131,6 @@ double DualTreeKMeansRules<MetricType, TreeType>::Score(
referenceNode.Parent()->Stat().MaxQueryNodeDistance(),
referenceNode.Stat().MaxQueryNodeDistance());
}
- else if (referenceNode.Parent() != NULL &&
- referenceNode.Parent()->Stat().ClosestQueryNode() == NULL)
- Log::Fatal << "wtf\n";
if (maxDistance < referenceNode.Stat().MaxQueryNodeDistance() ||
referenceNode.Stat().ClosestQueryNode() == NULL)
@@ -155,20 +152,7 @@ double DualTreeKMeansRules<MetricType, TreeType>::Score(
referenceNode.Stat().ClustersPruned() += queryNode.NumDescendants();
// Have we pruned everything?
- if (referenceNode.Stat().ClustersPruned() == centroids.n_cols - 1)
- {
- // Then the best query node must contain just one point.
- const TreeType* bestQueryNode = (TreeType*)
- referenceNode.Stat().ClosestQueryNode();
- const size_t cluster = mappings[bestQueryNode->Descendant(0)];
-
- referenceNode.Stat().Owner() = cluster;
- newCentroids.col(cluster) += referenceNode.NumDescendants() *
- referenceNode.Stat().Centroid();
- counts(cluster) += referenceNode.NumDescendants();
- referenceNode.Stat().ClustersPruned()++;
- }
- else if (referenceNode.Stat().ClustersPruned() +
+ if (referenceNode.Stat().ClustersPruned() +
visited[referenceNode.Descendant(0)] == centroids.n_cols)
{
for (size_t i = 0; i < referenceNode.NumDescendants(); ++i)
@@ -221,7 +205,7 @@ double DualTreeKMeansRules<MetricType, TreeType>::ElkanTypeScore(
{
// We have to calculate the minimum distance between the query node and the
// reference node's best query node. First, try to use the cached distance.
- const double minQueryDistance = queryNode.Stat().FirstBound();
+// const double minQueryDistance = queryNode.Stat().FirstBound();
if (queryNode.NumDescendants() == 1)
{
const double score = ElkanTypeScore(queryNode, referenceNode,
More information about the mlpack-git
mailing list