[mlpack] 94/207: Fix syntax and style issues.

Barak A. Pearlmutter barak+git at pearlmutter.net
Thu Mar 23 17:53:44 UTC 2017


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

bap pushed a commit to branch master
in repository mlpack.

commit 960194d092256e3a59bb4af856e147e9eac74efe
Author: Ryan Curtin <ryan at ratml.org>
Date:   Sun Feb 26 22:57:46 2017 -0500

    Fix syntax and style issues.
---
 src/mlpack/core/dists/discrete_distribution.cpp | 52 +++++++++++++------------
 src/mlpack/core/dists/discrete_distribution.hpp | 28 ++++++-------
 src/mlpack/tests/distribution_test.cpp          | 11 +++---
 3 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/src/mlpack/core/dists/discrete_distribution.cpp b/src/mlpack/core/dists/discrete_distribution.cpp
index 66b1fa5..580f4b6 100644
--- a/src/mlpack/core/dists/discrete_distribution.cpp
+++ b/src/mlpack/core/dists/discrete_distribution.cpp
@@ -51,14 +51,14 @@ arma::vec DiscreteDistribution::Random() const
  */
 void DiscreteDistribution::Train(const arma::mat& observations)
 {
-  // Make sure the observations have same dimension with the probabilities
-  if(observations.n_rows != probabilities.size())
+  // Make sure the observations have same dimension as the probabilities.
+  if (observations.n_rows != probabilities.size())
   {
-    Log::Debug << "the obversation must has the same dimension with the probabilities"
-        << "the observation's dimension is" << observations.n_cols << "but the dimension of "
-        << "probabilities is" << probabilities.size() << std::endl;
+    throw std::invalid_argument("observations must have same dimensionality as "
+        "the DiscreteDistribution object");
   }
-  // Get the dimension size of the distribution
+
+  // Get the dimension size of the distribution.
   const size_t dimensions = probabilities.size();
 
   // Iterate all the probabilities in each dimension
@@ -69,16 +69,18 @@ void DiscreteDistribution::Train(const arma::mat& observations)
     for (size_t r=0; r < observations.n_cols; r++)
       {
       // Add the probability of each observation.  The addition of 0.5 to the
-      // observation is to turn the default flooring operation of the size_t cast
-      // into a rounding observation.
+      // observation is to turn the default flooring operation of the size_t
+      // cast into a rounding observation.
       const size_t obs = size_t(observations(i, r) + 0.5);
 
       // Ensure that the observation is within the bounds.
       if (obs >= probabilities[i].n_elem)
       {
-        Log::Debug << "DiscreteDistribution::Train(): observation " << i
-            << " (" << obs << ") is invalid; observation must be in [0, "
-            << probabilities[i].n_elem << "] for this distribution." << std::endl;       
+        std::ostringstream oss;
+        oss << "observation " << r << " in dimension " << i << " ("
+            << observations(i, r) << ") is invalid; must be in [0, "
+            << probabilities[i].n_elem << "] for this distribution";
+        throw std::invalid_argument(oss.str());
       }
       probabilities[i][obs]++;
       }
@@ -97,17 +99,16 @@ void DiscreteDistribution::Train(const arma::mat& observations)
  * given probabilities that each observation is from this distribution.
  */
 void DiscreteDistribution::Train(const arma::mat& observations,
-                                    const arma::vec& probObs)
+                                 const arma::vec& probObs)
 {
-  // Make sure the observations have same dimension with the probabilities
-  if(observations.n_rows != probabilities.size())
-    {
-      Log::Debug << "the obversation must has the same dimension with the probabilities"
-          << "the observation's dimension is" << observations.n_rows<< "but the dimension of "
-          << "probabilities is" << probabilities.size() << std::endl;
-    }
+  // Make sure the observations have same dimension as the probabilities.
+  if (observations.n_rows != probabilities.size())
+  {
+    throw std::invalid_argument("observations must have same dimensionality as "
+        "the DiscreteDistribution object");
+  }
 
-  // Get the dimension size of the distribution
+  // Get the dimension size of the distribution.
   size_t dimensions = probabilities.size();
   for (size_t i=0; i < dimensions; i++)
   {
@@ -120,15 +121,16 @@ void DiscreteDistribution::Train(const arma::mat& observations,
       // Add the probability of each observation.  The addition of 0.5 to the
       // observation is to turn the default flooring operation of the size_t cast
       // into a rounding observation.
-
-      const size_t obs = size_t(observations(i, r)+ 0.5);
+      const size_t obs = size_t(observations(i, r) + 0.5);
 
       // Ensure that the observation is within the bounds.
       if (obs >= probabilities[i].n_elem)
       {
-        Log::Debug << "DiscreteDistribution::Train(): observation " << i
-            << " (" << obs << ") is invalid; observation must be in [0, "
-            << probabilities[i].n_elem << "] for this distribution." << std::endl;       
+        std::ostringstream oss;
+        oss << "observation " << r << " in dimension " << i << " ("
+            << observations(i, r) << ") is invalid; must be in [0, "
+            << probabilities[i].n_elem << "] for this distribution";
+        throw std::invalid_argument(oss.str());
       }
 
       probabilities[i][obs] += probObs[r];
diff --git a/src/mlpack/core/dists/discrete_distribution.hpp b/src/mlpack/core/dists/discrete_distribution.hpp
index 3171791..cbf7c2a 100644
--- a/src/mlpack/core/dists/discrete_distribution.hpp
+++ b/src/mlpack/core/dists/discrete_distribution.hpp
@@ -49,7 +49,7 @@ class DiscreteDistribution
    * Default constructor, which creates a distribution that has no observations.
    */
   DiscreteDistribution() :
-   probabilities(std::vector<arma::vec>(1)){ /* nothing to do */ }
+      probabilities(std::vector<arma::vec>(1)){ /* Nothing to do. */ }
 
   /**
    * Define the discrete distribution as having numObservations possible
@@ -60,8 +60,9 @@ class DiscreteDistribution
    *    can have.
    */
   DiscreteDistribution(const size_t numObservations) :
-     probabilities(std::vector<arma::vec>(1, arma::ones<arma::vec>(numObservations)/numObservations))
-  { /* nothing to do */ }
+      probabilities(std::vector<arma::vec>(1,
+          arma::ones<arma::vec>(numObservations) / numObservations))
+  { /* Nothing to do. */ }
 
   /**
    * Define the multidimensional discrete distribution as having numObservations possible
@@ -93,7 +94,7 @@ class DiscreteDistribution
    */
   DiscreteDistribution(const std::vector<arma::vec>& probabilities)
   {
-    for (size_t i=0; i<probabilities.size(); i++)
+    for (size_t i = 0; i < probabilities.size(); i++)
     {
       arma::vec temp = probabilities[i];
       double sum = accu(temp);
@@ -101,7 +102,8 @@ class DiscreteDistribution
         this->probabilities.push_back(temp / sum);
       else
       {
-        this->probabilities.push_back(arma::ones<arma::vec>(temp.n_elem)/temp.n_elem);
+        this->probabilities.push_back(arma::ones<arma::vec>(temp.n_elem)
+            / temp.n_elem);
       }
     }
   }
@@ -159,7 +161,7 @@ class DiscreteDistribution
    */
   double LogProbability(const arma::vec& observation) const
   {
-    // TODO: consider storing log_probabilities instead
+    // TODO: consider storing log probabilities instead?
     return log(Probability(observation));
   }
 
@@ -193,11 +195,11 @@ class DiscreteDistribution
   void Train(const arma::mat& observations,
              const arma::vec& probabilities);
 
-  //! Return the vector of probabilities.
-  arma::vec& Probabilities(const size_t dim = 0) { return probabilities[dim];}
-
-  //! Modify the vector of probabilities.
-  const arma::vec& Probabilities(const size_t dim = 0) const { return probabilities[dim];}
+  //! Return the vector of probabilities for the given dimension.
+  arma::vec& Probabilities(const size_t dim = 0) { return probabilities[dim]; }
+  //! Modify the vector of probabilities for the given dimension.
+  const arma::vec& Probabilities(const size_t dim = 0) const
+  { return probabilities[dim]; }
 
   /**
    * Serialize the distribution.
@@ -226,8 +228,8 @@ class DiscreteDistribution
   }
 
  private:
-  // The Probability Martix which each column represent one dimension and 
-  // the row represent the observations in that dimension. 
+  //! The probabilities for each dimension; each arma::vec represents the
+  //! probabilities for the observations in each dimension.
   std::vector<arma::vec> probabilities;
 };
 
diff --git a/src/mlpack/tests/distribution_test.cpp b/src/mlpack/tests/distribution_test.cpp
index b5597e7..068b82a 100644
--- a/src/mlpack/tests/distribution_test.cpp
+++ b/src/mlpack/tests/distribution_test.cpp
@@ -64,18 +64,18 @@ BOOST_AUTO_TEST_CASE(DiscreteDistributionProbabilityTest)
  */
 BOOST_AUTO_TEST_CASE(DiscreteDistributionRandomTest)
 {
-  DiscreteDistribution d(3);
+  DiscreteDistribution d(arma::Col<size_t>("3"));
 
   d.Probabilities() = "0.3 0.6 0.1";
 
   arma::vec actualProb(3);
+
   actualProb.zeros();
 
   for (size_t i = 0; i < 50000; i++)
     actualProb((size_t) (d.Random()[0] + 0.5))++;
 
   // Normalize.
-  Log::Debug << actualProb.t();
   actualProb /= accu(actualProb);
 
   // 8% tolerance, because this can be a noisy process.
@@ -120,7 +120,7 @@ BOOST_AUTO_TEST_CASE(DiscreteDistributionTrainProbTest)
 }
 
 /**
- * Achieve multidimensional probability distribution
+ * Achieve multidimensional probability distribution.
  */
 BOOST_AUTO_TEST_CASE(MultiDiscreteDistributionTrainProbTest)
 {
@@ -151,7 +151,7 @@ BOOST_AUTO_TEST_CASE(MultiDiscreteDistributionConstructorTest)
 }
 
 /**
- * Achieve multidimensional probability distribution
+ * Achieve multidimensional probability distribution.
  */
 BOOST_AUTO_TEST_CASE(MultiDiscreteDistributionTrainTest)
 {
@@ -167,7 +167,8 @@ BOOST_AUTO_TEST_CASE(MultiDiscreteDistributionTrainTest)
 }
 
 /**
- * Estimate multidimensional probability distribution from observations with probabilities.
+ * Estimate multidimensional probability distribution from observations with
+ * probabilities.
  */
 BOOST_AUTO_TEST_CASE(MultiDiscreteDistributionTrainProTest)
 {

-- 
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