[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