SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
distributions
Gaussian.h
浏览该文件的文档.
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
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
208
static
CGaussian
*
obtain_from_generic
(
CDistribution
* distribution);
209
211
virtual
const
char
*
get_name
()
const
{
return
"Gaussian"
; }
212
213
private
:
215
void
register_params();
216
221
void
decompose_cov(
SGMatrix<float64_t>
cov);
222
223
protected
:
225
float64_t
m_constant
;
227
SGVector<float64_t>
m_d
;
229
SGMatrix<float64_t>
m_u
;
231
SGVector<float64_t>
m_mean
;
233
ECovType
m_cov_type
;
234
};
235
}
236
#endif //HAVE_LAPACK
237
#endif //_GAUSSIAN_H__
SHOGUN
机器学习工具包 - 项目文档