[mlpack] 08/22: Test incremental variance functionality.

Barak A. Pearlmutter barak+git at cs.nuim.ie
Thu Apr 17 12:23:02 UTC 2014


This is an automated email from the git hooks/post-receive script.

bap pushed a commit to branch svn-trunk
in repository mlpack.

commit 80524d62058a27be9e345a61fa8de9ba25326b2b
Author: rcurtin <rcurtin at 9d5b8971-822b-0410-80eb-d18c1038ef23>
Date:   Tue Apr 15 15:24:09 2014 +0000

    Test incremental variance functionality.
    
    
    git-svn-id: http://svn.cc.gatech.edu/fastlab/mlpack/trunk@16428 9d5b8971-822b-0410-80eb-d18c1038ef23
---
 src/mlpack/tests/nbc_test.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/src/mlpack/tests/nbc_test.cpp b/src/mlpack/tests/nbc_test.cpp
index 7d66fbe..a8b6ad7 100644
--- a/src/mlpack/tests/nbc_test.cpp
+++ b/src/mlpack/tests/nbc_test.cpp
@@ -67,4 +67,59 @@ BOOST_AUTO_TEST_CASE(NaiveBayesClassifierTest)
     BOOST_REQUIRE_EQUAL(testRes(i), calcVec(i));
 }
 
+// The same test, but this one uses the incremental algorithm to calculate
+// variance.
+BOOST_AUTO_TEST_CASE(NaiveBayesClassifierIncrementalTest)
+{
+  const char* trainFilename = "trainSet.csv";
+  const char* testFilename = "testSet.csv";
+  const char* trainResultFilename = "trainRes.csv";
+  const char* testResultFilename = "testRes.csv";
+  size_t classes = 2;
+
+  arma::mat trainData, trainRes, calcMat;
+  data::Load(trainFilename, trainData, true);
+  data::Load(trainResultFilename, trainRes, true);
+
+  // Get the labels out.
+  arma::Col<size_t> labels(trainData.n_cols);
+  for (size_t i = 0; i < trainData.n_cols; ++i)
+    labels[i] = trainData(trainData.n_rows - 1, i);
+  trainData.shed_row(trainData.n_rows - 1);
+
+  NaiveBayesClassifier<> nbcTest(trainData, labels, classes, true);
+
+  size_t dimension = nbcTest.Means().n_rows;
+  calcMat.zeros(2 * dimension + 1, classes);
+
+  for (size_t i = 0; i < dimension; i++)
+  {
+    for (size_t j = 0; j < classes; j++)
+    {
+      calcMat(i, j) = nbcTest.Means()(i, j);
+      calcMat(i + dimension, j) = nbcTest.Variances()(i, j);
+    }
+  }
+
+  for (size_t i = 0; i < classes; i++)
+    calcMat(2 * dimension, i) = nbcTest.Probabilities()(i);
+
+  for (size_t i = 0; i < calcMat.n_rows; i++)
+    for (size_t j = 0; j < classes; j++)
+      BOOST_REQUIRE_CLOSE(trainRes(i, j) + .00001, calcMat(i, j), 0.01);
+
+  arma::mat testData;
+  arma::Mat<size_t> testRes;
+  arma::Col<size_t> calcVec;
+  data::Load(testFilename, testData, true);
+  data::Load(testResultFilename, testRes, true);
+
+  testData.shed_row(testData.n_rows - 1); // Remove the labels.
+
+  nbcTest.Classify(testData, calcVec);
+
+  for (size_t i = 0; i < testData.n_cols; i++)
+    BOOST_REQUIRE_EQUAL(testRes(i), calcVec(i));
+}
+
 BOOST_AUTO_TEST_SUITE_END();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/mlpack.git



More information about the debian-science-commits mailing list