[mlpack-svn] r17279 - mlpack/trunk/src/mlpack/core/dists

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Sun Nov 2 12:53:10 EST 2014


Author: michaelfox99
Date: Sun Nov  2 12:53:10 2014
New Revision: 17279

Log:
rename hmm_regression.cpp


Added:
   mlpack/trunk/src/mlpack/core/dists/regression_distribution.cpp

Added: mlpack/trunk/src/mlpack/core/dists/regression_distribution.cpp
==============================================================================
--- (empty file)
+++ mlpack/trunk/src/mlpack/core/dists/regression_distribution.cpp	Sun Nov  2 12:53:10 2014
@@ -0,0 +1,79 @@
+/**
+ * @file regression_distribution.cpp
+ * @author Michael Fox
+ *
+ * Implementation of conditional Gaussian distribution for HMM regression (HMMR)
+ */
+
+#include "regression_distribution.hpp"
+
+using namespace mlpack;
+using namespace mlpack::distribution;
+
+/**
+ * Returns a string representation of this object.
+ */
+std::string RegressionDistribution::ToString()
+    const
+{
+  std::ostringstream convert;
+  convert << "HMMRegression [" << this << "]" << std::endl;
+
+  // Secondary ostringstream so things can be indented right.
+  std::ostringstream data;
+  data << "Conditional mean function: " << std::endl << rf.ToString();
+  data << "Parameters: " << std::endl << rf.Parameters();
+  data << "Error distribution: " << std::endl << err.ToString();
+
+  convert << util::Indent(data.str());
+  return convert.str();
+}
+
+/**
+* Estimate parameters using provided observation weights
+*
+* @param observations List of observations.
+*/
+void RegressionDistribution::Estimate(const arma::mat& observations)
+{
+  regression::LinearRegression lr(observations.rows(1, observations.n_rows-1),
+      (observations.row(0)).t(), 0, true);
+  rf = lr;
+  arma::vec fitted;
+  lr.Predict(observations.rows(1, observations.n_rows-1), fitted);
+  err.Estimate(observations.row(0)-fitted.t());
+}
+
+/**
+* Estimate parameters using provided observation weights
+*
+* @param weights probability that given observation is from distribution
+*/
+void RegressionDistribution::Estimate(const arma::mat& observations,
+                             const arma::vec& weights)
+{
+  regression::LinearRegression lr(observations.rows(1, observations.n_rows-1),
+      (observations.row(0)).t(), 0, true, weights);
+  rf = lr;
+  arma::vec fitted;
+  lr.Predict(observations.rows(1, observations.n_rows-1), fitted);
+  err.Estimate(observations.row(0)-fitted.t(), weights);
+}
+
+/**
+* Evaluate probability density function of given observation  
+*
+* @param observation point to evaluate probability at
+*/
+double RegressionDistribution::Probability(const arma::vec& observation) const
+{
+  arma::vec fitted;
+  rf.Predict(observation.rows(1, observation.n_rows-1), fitted);
+  return err.Probability(observation(0)-fitted);
+}
+
+void RegressionDistribution::Predict(const arma::mat& points,
+				                             arma::vec& predictions) const
+{
+	rf.Predict(points, predictions);
+}
\ No newline at end of file



More information about the mlpack-svn mailing list