MLPACK  1.0.7
gaussian_distribution.hpp
Go to the documentation of this file.
1 
22 #ifndef __MLPACK_METHODS_HMM_DISTRIBUTIONS_GAUSSIAN_DISTRIBUTION_HPP
23 #define __MLPACK_METHODS_HMM_DISTRIBUTIONS_GAUSSIAN_DISTRIBUTION_HPP
24 
25 #include <mlpack/core.hpp>
26 // Should be somewhere else, maybe in core.
28 
29 namespace mlpack {
30 namespace distribution {
31 
36 {
37  private:
39  arma::vec mean;
41  arma::mat covariance;
42 
43  public:
47  GaussianDistribution() { /* nothing to do */ }
48 
53  GaussianDistribution(const size_t dimension) :
54  mean(arma::zeros<arma::vec>(dimension)),
55  covariance(arma::eye<arma::mat>(dimension, dimension))
56  { /* Nothing to do. */ }
57 
61  GaussianDistribution(const arma::vec& mean, const arma::mat& covariance) :
62  mean(mean), covariance(covariance) { /* Nothing to do. */ }
63 
65  size_t Dimensionality() const { return mean.n_elem; }
66 
70  double Probability(const arma::vec& observation) const
71  {
72  return mlpack::gmm::phi(observation, mean, covariance);
73  }
74 
81  arma::vec Random() const;
82 
88  void Estimate(const arma::mat& observations);
89 
95  void Estimate(const arma::mat& observations,
96  const arma::vec& probabilities);
97 
101  const arma::vec& Mean() const { return mean; }
102 
106  arma::vec& Mean() { return mean; }
107 
111  const arma::mat& Covariance() const { return covariance; }
112 
116  arma::mat& Covariance() { return covariance; }
117 
121  std::string ToString() const;
122 };
123 
124 }; // namespace distribution
125 }; // namespace mlpack
126 
127 #endif