SHOGUN
v2.0.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
distributions
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
18
#include <
shogun/distributions/Distribution.h
>
19
#include <
shogun/features/DotFeatures.h
>
20
#include <
shogun/lib/common.h
>
21
#include <
shogun/mathematics/lapack.h
>
22
#include <
shogun/mathematics/Math.h
>
23
24
namespace
shogun
25
{
26
class
CDotFeatures;
27
29
enum
ECovType
30
{
32
FULL
,
34
DIAG
,
36
SPHERICAL
37
};
38
46
class
CGaussian
:
public
CDistribution
47
{
48
public
:
50
CGaussian
();
57
CGaussian
(
const
SGVector<float64_t>
mean,
SGMatrix<float64_t>
cov,
ECovType
cov_type=
FULL
);
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
90
virtual
float64_t
get_log_derivative
(
91
int32_t num_param, int32_t num_example);
92
100
virtual
float64_t
get_log_likelihood_example
(int32_t num_example);
101
107
virtual
inline
float64_t
compute_PDF
(
SGVector<float64_t>
point)
108
{
109
return
CMath::exp
(
compute_log_PDF
(point));
110
}
111
117
virtual
float64_t
compute_log_PDF
(
SGVector<float64_t>
point);
118
123
virtual
SGVector<float64_t>
get_mean
();
124
129
virtual
void
set_mean
(
const
SGVector<float64_t>
mean);
130
135
virtual
SGMatrix<float64_t>
get_cov
();
136
143
virtual
void
set_cov
(
SGMatrix<float64_t>
cov);
144
149
inline
ECovType
get_cov_type
()
150
{
151
return
m_cov_type
;
152
}
153
160
inline
void
set_cov_type
(
ECovType
cov_type)
161
{
162
m_cov_type
= cov_type;
163
}
164
169
inline
SGVector<float64_t>
get_d
()
170
{
171
return
m_d
;
172
}
173
178
void
set_d
(
const
SGVector<float64_t>
d);
179
184
inline
SGMatrix<float64_t>
get_u
()
185
{
186
return
m_u
;
187
}
188
193
inline
void
set_u
(
SGMatrix<float64_t>
u)
194
{
195
m_u
= u;
196
}
197
202
SGVector<float64_t>
sample
();
203
205
inline
virtual
const
char
*
get_name
()
const
{
return
"Gaussian"
; }
206
207
private
:
209
void
register_params();
210
215
void
decompose_cov(
SGMatrix<float64_t>
cov);
216
217
protected
:
219
float64_t
m_constant
;
221
SGVector<float64_t>
m_d
;
223
SGMatrix<float64_t>
m_u
;
225
SGVector<float64_t>
m_mean
;
227
ECovType
m_cov_type
;
228
};
229
}
230
#endif //HAVE_LAPACK
231
#endif //_GAUSSIAN_H__
SHOGUN
Machine Learning Toolbox - Documentation