[mlpack-svn] r12695 - mlpack/trunk/src/mlpack/tests

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Wed May 16 14:59:23 EDT 2012


Author: rcurtin
Date: 2012-05-16 14:59:22 -0400 (Wed, 16 May 2012)
New Revision: 12695

Modified:
   mlpack/trunk/src/mlpack/tests/allknn_test.cpp
Log:
Add a dual-tree test for cover trees.


Modified: mlpack/trunk/src/mlpack/tests/allknn_test.cpp
===================================================================
--- mlpack/trunk/src/mlpack/tests/allknn_test.cpp	2012-05-16 18:58:36 UTC (rev 12694)
+++ mlpack/trunk/src/mlpack/tests/allknn_test.cpp	2012-05-16 18:59:22 UTC (rev 12695)
@@ -1,5 +1,5 @@
 /**
- * @file allknntest.cpp
+ * @file allknn_test.cpp
  *
  * Test file for AllkNN class.
  */
@@ -471,4 +471,50 @@
   }
 }
 
+/**
+ * Test the cover tree dual-tree nearest neighbors method against the naive
+ * method.
+ */
+BOOST_AUTO_TEST_CASE(DualCoverTreeTest)
+{
+  arma::mat data;
+  srand(time(NULL));
+  data.randn(3, 1000);
+
+  arma::mat kdtreeData(data);
+
+  AllkNN tree(kdtreeData);
+
+  arma::Mat<size_t> kdNeighbors;
+  arma::mat kdDistances;
+  tree.Search(5, kdNeighbors, kdDistances);
+
+  tree::CoverTree<metric::LMetric<2>, tree::FirstPointIsRoot,
+      QueryStat<NearestNeighborSort> > referenceTree = tree::CoverTree<
+      metric::LMetric<2>, tree::FirstPointIsRoot,
+      QueryStat<NearestNeighborSort> >(data);
+
+  NeighborSearch<NearestNeighborSort, metric::LMetric<2>,
+      tree::CoverTree<metric::LMetric<2>, tree::FirstPointIsRoot,
+      QueryStat<NearestNeighborSort> > >
+      coverTreeSearch(&referenceTree, data);
+
+  arma::Mat<size_t> coverNeighbors;
+  arma::mat coverDistances;
+  coverTreeSearch.Search(5, coverNeighbors, coverDistances);
+
+  for (size_t i = 0; i < coverNeighbors.n_cols; ++i)
+  {
+    Log::Debug << trans(coverNeighbors.col(i));
+    Log::Debug << trans(coverDistances.col(i));
+    Log::Warn << trans(kdNeighbors.col(i));
+    Log::Warn << trans(kdDistances.col(i));
+    for (size_t j = 0; j < coverNeighbors.n_rows; ++j)
+    {
+      BOOST_REQUIRE_EQUAL(coverNeighbors(j, i), kdNeighbors(j, i));
+      BOOST_REQUIRE_CLOSE(coverDistances(j, i), kdDistances(j, i), 1e-5);
+    }
+  }
+}
+
 BOOST_AUTO_TEST_SUITE_END();




More information about the mlpack-svn mailing list