[mlpack-git] master: Implemented Save, Load (8f4b871)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Mar 5 21:56:21 EST 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/904762495c039e345beba14c1142fd719b3bd50e...f94823c800ad6f7266995c700b1b630d5ffdcf40
>---------------------------------------------------------------
commit 8f4b87110ceeaf3ad7f77236eaedf139e50ff36b
Author: michaelfox99 <michaelfox99 at gmail.com>
Date: Tue Aug 5 13:29:06 2014 +0000
Implemented Save, Load
>---------------------------------------------------------------
8f4b87110ceeaf3ad7f77236eaedf139e50ff36b
src/mlpack/core/dists/gaussian_distribution.cpp | 40 +++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/src/mlpack/core/dists/gaussian_distribution.cpp b/src/mlpack/core/dists/gaussian_distribution.cpp
index 7c8f14e..595613e 100644
--- a/src/mlpack/core/dists/gaussian_distribution.cpp
+++ b/src/mlpack/core/dists/gaussian_distribution.cpp
@@ -1,6 +1,7 @@
/**
* @file gaussian_distribution.cpp
* @author Ryan Curtin
+ * @author Michael Fox
*
* Implementation of Gaussian distribution class.
*/
@@ -9,6 +10,31 @@
using namespace mlpack;
using namespace mlpack::distribution;
+/**
+ * Calculates the multivariate Gaussian probability density function for each
+ * data point (column) in the given matrix, with respect to the given mean and
+ * variance.
+ *
+ * @param x List of observations.
+ * @param mean Mean of multivariate Gaussian.
+ * @param cov Covariance of multivariate Gaussian.
+ * @param probabilities Output probabilities for each input observation.
+ */
+
+double GaussianDistribution::Probability(const arma::vec& observation) const
+{
+ arma::vec diff = mean - observation;
+
+ // Parentheses required for Armadillo 3.0.0 bug.
+ arma::vec exponent = -0.5 * (trans(diff) * inv(covariance) * diff);
+
+ // TODO: What if det(cov) < 0?
+ return pow(2 * M_PI, (double) observation.n_elem / -2.0) *
+ pow(det(covariance), -0.5) * exp(exponent[0]);
+}
+
+
+
arma::vec GaussianDistribution::Random() const
{
// Should we store chol(covariance) for easier calculation later?
@@ -149,3 +175,17 @@ std::string GaussianDistribution::ToString() const
convert << util::Indent(data.str());
return convert.str();
}
+
+
+/*
+ * Save to or Load from SaveRestoreUtility
+ */
+void GaussianDistribution::Save(util::SaveRestoreUtility& sr) const {
+ sr.SaveParameter(Type(), "type");
+ sr.SaveParameter(mean, "mean");
+ sr.SaveParameter(covariance, "covariance");
+}
+void GaussianDistribution::Load(const util::SaveRestoreUtility& sr) {
+ sr.LoadParameter(mean, "mean");
+ sr.LoadParameter(covariance, "covariance");
+}
More information about the mlpack-git
mailing list