SHOGUN  v1.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Gaussian.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2011 Alesis Novik
8  * Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society
9  */
10 
11 #ifndef _GAUSSIAN_H__
12 #define _GAUSSIAN_H__
13 
14 #include <shogun/lib/config.h>
15 
16 #ifdef HAVE_LAPACK
17 
20 #include <shogun/lib/common.h>
23 
24 namespace shogun
25 {
26 class CDotFeatures;
27 
30 {
37 };
38 
46 class CGaussian : public CDistribution
47 {
48  public:
50  CGaussian();
58  virtual ~CGaussian();
59 
61  void init();
62 
69  virtual bool train(CFeatures* data=NULL);
70 
75  virtual int32_t get_num_model_parameters();
76 
82  virtual float64_t get_log_model_parameter(int32_t num_param);
83 
91  int32_t num_param, int32_t num_example);
92 
100  virtual float64_t get_log_likelihood_example(int32_t num_example);
101 
108  {
109  return CMath::exp(compute_log_PDF(point));
110  }
111 
118 
123  virtual inline SGVector<float64_t> get_mean()
124  {
125  return m_mean;
126  }
127 
132  virtual inline void set_mean(SGVector<float64_t> mean)
133  {
135  if (mean.vlen==1)
137 
138  m_mean=mean;
139  }
140 
145  virtual SGMatrix<float64_t> get_cov();
146 
153  virtual inline void set_cov(SGMatrix<float64_t> cov)
154  {
155  ASSERT(cov.num_rows==cov.num_cols);
156  ASSERT(cov.num_rows==m_mean.vlen);
157  decompose_cov(cov);
158  init();
159  if (cov.do_free)
160  cov.free_matrix();
161  }
162 
168  {
169  return m_cov_type;
170  }
171 
178  inline void set_cov_type(ECovType cov_type)
179  {
180  m_cov_type = cov_type;
181  }
182 
188  {
189  return m_d;
190  }
191 
196  inline void set_d(SGVector<float64_t> d)
197  {
199  m_d = d;
200  init();
201  }
202 
208  {
209  return m_u;
210  }
211 
216  inline void set_u(SGMatrix<float64_t> u)
217  {
219  m_u = u;
220  }
221 
227 
229  inline virtual const char* get_name() const { return "Gaussian"; }
230 
231  private:
233  void register_params();
234 
239  void decompose_cov(SGMatrix<float64_t> cov);
240 
241  protected:
252 };
253 }
254 #endif //HAVE_LAPACK
255 #endif //_GAUSSIAN_H__
SGVector< float64_t > sample()
Definition: Gaussian.cpp:245
float64_t m_constant
Definition: Gaussian.h:243
void set_u(SGMatrix< float64_t > u)
Definition: Gaussian.h:216
virtual void destroy_matrix()
Definition: DataType.h:340
Gaussian distribution interface.
Definition: Gaussian.h:46
ECovType get_cov_type()
Definition: Gaussian.h:167
virtual bool train(CFeatures *data=NULL)
Definition: Gaussian.cpp:67
virtual float64_t compute_log_PDF(SGVector< float64_t > point)
Definition: Gaussian.cpp:126
Base class Distribution from which all methods implementing a distribution are derived.
Definition: Distribution.h:41
ECovType m_cov_type
Definition: Gaussian.h:251
virtual SGVector< float64_t > get_mean()
Definition: Gaussian.h:123
full covariance
Definition: Gaussian.h:32
spherical covariance
Definition: Gaussian.h:36
virtual float64_t compute_PDF(SGVector< float64_t > point)
Definition: Gaussian.h:107
SGMatrix< float64_t > m_u
Definition: Gaussian.h:247
#define ASSERT(x)
Definition: SGIO.h:102
virtual float64_t get_log_model_parameter(int32_t num_param)
Definition: Gaussian.cpp:105
SGMatrix< float64_t > get_u()
Definition: Gaussian.h:207
virtual void destroy_vector()
Definition: DataType.h:223
double float64_t
Definition: common.h:56
ECovType
Definition: Gaussian.h:29
SGVector< float64_t > m_mean
Definition: Gaussian.h:249
index_t num_rows
Definition: DataType.h:366
virtual SGMatrix< float64_t > get_cov()
Definition: Gaussian.cpp:165
void set_cov_type(ECovType cov_type)
Definition: Gaussian.h:178
index_t num_cols
Definition: DataType.h:368
virtual ~CGaussian()
Definition: Gaussian.cpp:60
diagonal covariance
Definition: Gaussian.h:34
void set_d(SGVector< float64_t > d)
Definition: Gaussian.h:196
virtual float64_t get_log_likelihood_example(int32_t num_example)
Definition: Gaussian.cpp:117
virtual const char * get_name() const
Definition: Gaussian.h:229
virtual void set_cov(SGMatrix< float64_t > cov)
Definition: Gaussian.h:153
The class Features is the base class of all feature objects.
Definition: Features.h:56
static float64_t exp(float64_t x)
Definition: Math.h:368
SGVector< float64_t > get_d()
Definition: Gaussian.h:187
virtual void set_mean(SGVector< float64_t > mean)
Definition: Gaussian.h:132
virtual int32_t get_num_model_parameters()
Definition: Gaussian.cpp:91
virtual void free_matrix()
Definition: DataType.h:328
index_t vlen
Definition: DataType.h:248
virtual float64_t get_log_derivative(int32_t num_param, int32_t num_example)
Definition: Gaussian.cpp:111
SGVector< float64_t > m_d
Definition: Gaussian.h:245

SHOGUN Machine Learning Toolbox - Documentation