[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