SHOGUN
v3.2.0
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
distributions
classical
ProbabilityDistribution.cpp
浏览该文件的文档.
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) 2013 Heiko Strathmann
8
*/
9
10
#include <
shogun/distributions/classical/ProbabilityDistribution.h
>
11
#include <
shogun/base/Parameter.h
>
12
#include <
shogun/lib/SGVector.h
>
13
#include <
shogun/lib/SGMatrix.h
>
14
15
using namespace
shogun;
16
17
CProbabilityDistribution::CProbabilityDistribution
() :
CSGObject
()
18
{
19
init();
20
}
21
22
CProbabilityDistribution::CProbabilityDistribution
(int32_t dimension) :
23
CSGObject
()
24
{
25
init();
26
27
REQUIRE
(dimension>0,
"Dimension of Distribution must be positive\n"
,
28
dimension);
29
30
m_dimension
=dimension;
31
}
32
33
34
CProbabilityDistribution::~CProbabilityDistribution
()
35
{
36
37
}
38
39
SGMatrix<float64_t>
CProbabilityDistribution::sample
(int32_t num_samples,
40
SGMatrix<float64_t>
pre_samples)
const
41
{
42
SG_ERROR
(
"Not implemented in sub-class\n"
);
43
return
SGMatrix<float64_t>
();
44
}
45
46
SGVector<float64_t>
CProbabilityDistribution::sample
()
const
47
{
48
SGMatrix<float64_t>
s=
sample
(1);
49
SGVector<float64_t>
result(
m_dimension
);
50
memcpy(result.
vector
, s.
matrix
,
m_dimension
*
sizeof
(
float64_t
));
51
return
result;
52
}
53
54
SGVector<float64_t>
CProbabilityDistribution::log_pdf_multiple
(
55
SGMatrix<float64_t>
samples)
const
56
{
57
SG_ERROR
(
"Not implemented in sub-class\n"
);
58
return
SGVector<float64_t>
();
59
}
60
61
float64_t
CProbabilityDistribution::log_pdf
(
SGVector<float64_t>
sample_vec)
const
62
{
63
REQUIRE
(sample_vec.
vlen
==
m_dimension
,
"Sample dimension (%d) does not "
64
"match dimension of distribution (%d)\n"
, sample_vec.
vlen
,
65
m_dimension
);
66
67
SGMatrix<float64_t>
s(
m_dimension
, 1);
68
memcpy(s.
matrix
, sample_vec.
vector
,
m_dimension
*
sizeof
(
float64_t
));
69
return
log_pdf_multiple
(s)[0];
70
}
71
72
void
CProbabilityDistribution::init()
73
{
74
m_dimension
=0;
75
76
SG_ADD
(&
m_dimension
,
"dimension"
,
"Dimension of distribution."
,
77
MS_NOT_AVAILABLE
);
78
}
shogun::SGVector::vector
T * vector
Definition:
SGVector.h:704
shogun::SGMatrix::matrix
T * matrix
Definition:
SGMatrix.h:299
SG_ERROR
#define SG_ERROR(...)
Definition:
SGIO.h:131
shogun::CProbabilityDistribution::m_dimension
int32_t m_dimension
Definition:
ProbabilityDistribution.h:80
REQUIRE
#define REQUIRE(x,...)
Definition:
SGIO.h:208
SGMatrix.h
shogun::CProbabilityDistribution::log_pdf
virtual float64_t log_pdf(SGVector< float64_t > sample_vec) const
Definition:
ProbabilityDistribution.cpp:61
shogun::MS_NOT_AVAILABLE
Definition:
SGObject.h:79
Parameter.h
shogun::CSGObject
Class SGObject is the base class of all shogun objects.
Definition:
SGObject.h:102
float64_t
double float64_t
Definition:
common.h:48
shogun::SGVector< float64_t >
shogun::SGMatrix< float64_t >
shogun::CProbabilityDistribution::CProbabilityDistribution
CProbabilityDistribution()
Definition:
ProbabilityDistribution.cpp:17
shogun::CProbabilityDistribution::log_pdf_multiple
virtual SGVector< float64_t > log_pdf_multiple(SGMatrix< float64_t > samples) const
Definition:
ProbabilityDistribution.cpp:54
ProbabilityDistribution.h
SG_ADD
#define SG_ADD(...)
Definition:
SGObject.h:71
shogun::CProbabilityDistribution::sample
virtual SGVector< float64_t > sample() const
Definition:
ProbabilityDistribution.cpp:46
SGVector.h
shogun::CProbabilityDistribution::~CProbabilityDistribution
virtual ~CProbabilityDistribution()
Definition:
ProbabilityDistribution.cpp:34
shogun::SGVector::vlen
index_t vlen
Definition:
SGVector.h:706
SHOGUN
Machine Learning Toolbox - Documentation