STK++
0.9.13
STK_DiagGaussianParameters.cpp
Go to the documentation of this file.
1
/*--------------------------------------------------------------------*/
2
/* Copyright (C) 2004-2016 Serge Iovleff
3
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU Lesser General Public License as
6
published by the Free Software Foundation; either version 2 of the
7
License, or (at your option) any later version.
8
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public
15
License along with this program; if not, write to the
16
Free Software Foundation, Inc.,
17
59 Temple Place,
18
Suite 330,
19
Boston, MA 02111-1307
20
USA
21
22
Contact : S..._DOT_I..._AT_stkpp.org (see copyright for ...)
23
*/
24
25
/*
26
* Project: stkpp::Clustering
27
* created on: Oct 24, 2013
28
* Author: Serge Iovleff
29
**/
30
36
#include <
Clustering/include/DiagGaussianModels/STK_DiagGaussianParameters.h
>
37
38
namespace
STK
39
{
40
/* default constructor
41
* @param nbCluster the number of class of the mixture
42
**/
43
ModelParameters<Clust::Gaussian_sjk_>::ModelParameters
(
int
nbCluster)
44
: mean_(nbCluster), sigma_(nbCluster)
45
, stat_mean_(nbCluster), stat_sigma_(nbCluster)
46
{}
47
/* copy constructor.
48
* @param param the parameters to copy.
49
**/
50
ModelParameters<Clust::Gaussian_sjk_>::ModelParameters
(
ModelParameters
const
& param)
51
: mean_(param.mean_), sigma_(param.sigma_)
52
, stat_mean_(param.stat_mean_), stat_sigma_(param.stat_sigma_)
53
{}
54
/* destructor */
55
ModelParameters<Clust::Gaussian_sjk_>::~ModelParameters
() {}
56
/* copy operator.
57
* @param param the parameters to copy.
58
**/
59
ModelParameters<Clust::Gaussian_sjk_>
&
ModelParameters<Clust::Gaussian_sjk_>::operator=
(
ModelParameters
const
& param)
60
{
61
mean_ = param.mean_;
62
sigma_ = param.sigma_;
63
stat_mean_ = param.stat_mean_;
64
stat_sigma_ = param.stat_sigma_;
65
return
*
this
;
66
}
67
68
/* resize the set of parameter */
69
void
ModelParameters<Clust::Gaussian_sjk_>::resize
(
Range
const
& range)
70
{
71
for
(
int
k = mean_.begin(); k< mean_.end(); ++k)
72
{
73
mean_[k].resize(range) = 0.;
74
sigma_[k].resize(range) = 1.;
75
stat_mean_[k].resize(range);
76
stat_sigma_[k].resize(range);
77
}
78
}
79
80
/* update statistics of the parameters. */
81
void
ModelParameters<Clust::Gaussian_sjk_>::updateStatistics
()
82
{
83
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
84
{
85
stat_mean_[k].update(mean_[k]);
86
stat_sigma_[k].update(sigma_[k]);
87
}
88
}
89
/* Set the computed statistics */
90
void
ModelParameters<Clust::Gaussian_sjk_>::setStatistics
()
91
{
92
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
93
{
94
mean_[k] = stat_mean_[k].mean();
95
sigma_[k] = stat_sigma_[k].mean();
96
stat_mean_[k].release();
97
stat_sigma_[k].release();
98
}
99
}
100
/* Release the computed statistics */
101
void
ModelParameters<Clust::Gaussian_sjk_>::releaseStatistics
()
102
{
103
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
104
{
105
stat_mean_[k].release();
106
stat_sigma_[k].release();
107
}
108
}
109
110
/* default constructor
111
* @param nbCluster the number of class of the mixture
112
**/
113
ModelParameters<Clust::Gaussian_sj_>::ModelParameters
(
int
nbCluster)
114
: mean_(nbCluster), sigma_(nbCluster)
115
, stat_mean_(nbCluster), stat_sigma_(nbCluster)
116
{}
117
/* copy constructor.
118
* @param param the parameters to copy.
119
**/
120
ModelParameters<Clust::Gaussian_sj_>::ModelParameters
(
ModelParameters
const
& param)
121
: mean_(param.mean_), sigma_(param.sigma_)
122
, stat_mean_(param.stat_mean_), stat_sigma_(param.stat_sigma_)
123
{}
124
/* destructor */
125
ModelParameters<Clust::Gaussian_sj_>::~ModelParameters
() {}
126
/* copy operator.
127
* @param param the parameters to copy.
128
**/
129
ModelParameters<Clust::Gaussian_sj_>
&
ModelParameters<Clust::Gaussian_sj_>::operator=
(
ModelParameters
const
& param)
130
{
131
mean_ = param.mean_;
132
sigma_ = param.sigma_;
133
stat_mean_ = param.stat_mean_;
134
stat_sigma_ = param.stat_sigma_;
135
return
*
this
;
136
}
137
/* resize the set of parameter */
138
void
ModelParameters<Clust::Gaussian_sj_>::resize
(
Range
const
& range)
139
{
140
for
(
int
k = mean_.begin(); k< mean_.end(); ++k)
141
{
142
mean_[k].resize(range) = 0;
143
stat_mean_[k].resize(range);
144
}
145
sigma_.resize(range) = 1.;
146
stat_sigma_.resize(range);
147
}
148
/* update statistics of the parameters. */
149
void
ModelParameters<Clust::Gaussian_sj_>::updateStatistics
()
150
{
151
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
152
{
153
stat_mean_[k].update(mean_[k]);
154
}
155
stat_sigma_.update(sigma_);
156
}
157
/* Set the computed statistics */
158
void
ModelParameters<Clust::Gaussian_sj_>::setStatistics
()
159
{
160
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
161
{
162
mean_[k] = stat_mean_[k].mean();
163
stat_mean_[k].release();
164
}
165
sigma_ = stat_sigma_.mean();
166
stat_sigma_.release();
167
}
168
/* Release the computed statistics */
169
void
ModelParameters<Clust::Gaussian_sj_>::releaseStatistics
()
170
{
171
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
172
{
173
stat_mean_[k].release();
174
}
175
stat_sigma_.release();
176
}
177
/* default constructor
178
* @param nbCluster the number of class of the mixture
179
**/
180
ModelParameters<Clust::Gaussian_sk_>::ModelParameters
(
int
nbCluster)
181
: mean_(nbCluster), sigma_(nbCluster)
182
, stat_mean_(nbCluster), stat_sigma_(nbCluster)
183
{}
184
/* copy constructor.
185
* @param param the parameters to copy.
186
**/
187
ModelParameters<Clust::Gaussian_sk_>::ModelParameters
(
ModelParameters
const
& param)
188
: mean_(param.mean_), sigma_(param.sigma_)
189
, stat_mean_(param.stat_mean_), stat_sigma_(param.stat_sigma_)
190
{}
191
/* destructor */
192
ModelParameters<Clust::Gaussian_sk_>::~ModelParameters
() {}
193
/* copy operator.
194
* @param param the parameters to copy.
195
**/
196
ModelParameters<Clust::Gaussian_sk_>
&
ModelParameters<Clust::Gaussian_sk_>::operator=
(
ModelParameters
const
& param)
197
{
198
mean_ = param.mean_;
199
sigma_ = param.sigma_;
200
stat_mean_ = param.stat_mean_;
201
stat_sigma_ = param.stat_sigma_;
202
return
*
this
;
203
}
204
/* resize the set of parameter */
205
void
ModelParameters<Clust::Gaussian_sk_>::resize
(
Range
const
& range)
206
{
207
for
(
int
k = mean_.begin(); k< mean_.end(); ++k)
208
{
209
mean_[k].resize(range) =0;
210
sigma_[k] = 1.;
211
stat_mean_[k].resize(range);
212
stat_sigma_[k].release();
213
}
214
}
215
/* update statistics of the parameters. */
216
void
ModelParameters<Clust::Gaussian_sk_>::updateStatistics
()
217
{
218
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
219
{
220
stat_mean_[k].update(mean_[k]);
221
stat_sigma_[k].update(sigma_[k]);
222
}
223
}
224
/* Set the computed statistics */
225
void
ModelParameters<Clust::Gaussian_sk_>::setStatistics
()
226
{
227
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
228
{
229
mean_[k] = stat_mean_[k].mean();
230
sigma_[k] = stat_sigma_[k].mean();
231
stat_mean_[k].release();
232
stat_sigma_[k].release();
233
}
234
}
235
/* Release the computed statistics */
236
void
ModelParameters<Clust::Gaussian_sk_>::releaseStatistics
()
237
{
238
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
239
{
240
stat_mean_[k].release();
241
stat_sigma_[k].release();
242
}
243
}
244
/* default constructor
245
* @param nbCluster the number of class of the mixture
246
**/
247
ModelParameters<Clust::Gaussian_s_>::ModelParameters
(
int
nbCluster)
248
: mean_(nbCluster), sigma_(1.)
249
, stat_mean_(nbCluster), stat_sigma_()
250
{}
251
/* copy constructor.
252
* @param param the parameters to copy.
253
**/
254
ModelParameters<Clust::Gaussian_s_>::ModelParameters
(
ModelParameters
const
& param)
255
: mean_(param.mean_), sigma_(param.sigma_)
256
, stat_mean_(param.stat_mean_), stat_sigma_(param.stat_sigma_)
257
{}
258
/* destructor */
259
ModelParameters<Clust::Gaussian_s_>::~ModelParameters
() {}
260
/* copy operator.
261
* @param param the parameters to copy.
262
**/
263
ModelParameters<Clust::Gaussian_s_>
&
ModelParameters<Clust::Gaussian_s_>::operator=
(
ModelParameters
const
& param)
264
{
265
mean_ = param.mean_;
266
sigma_ = param.sigma_;
267
stat_mean_ = param.stat_mean_;
268
stat_sigma_ = param.stat_sigma_;
269
return
*
this
;
270
}
271
/* resize the set of parameter */
272
void
ModelParameters<Clust::Gaussian_s_>::resize
(
Range
const
& range)
273
{
274
for
(
int
k = mean_.begin(); k< mean_.end(); ++k)
275
{
276
mean_[k].resize(range) = 0;
277
stat_mean_[k].resize(range);
278
}
279
sigma_ = 1.;
280
stat_sigma_.release();
281
}
282
/* update statistics of the parameters. */
283
void
ModelParameters<Clust::Gaussian_s_>::updateStatistics
()
284
{
285
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
286
{
287
stat_mean_[k].update(mean_[k]);
288
}
289
stat_sigma_.update(sigma_);
290
}
291
/* Set the computed statistics */
292
void
ModelParameters<Clust::Gaussian_s_>::setStatistics
()
293
{
294
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
295
{
296
mean_[k] = stat_mean_[k].mean();
297
stat_mean_[k].release();
298
}
299
sigma_ = stat_sigma_.mean();
300
stat_sigma_.release();
301
}
302
/* Release the computed statistics */
303
void
ModelParameters<Clust::Gaussian_s_>::releaseStatistics
()
304
{
305
for
(
int
k=stat_mean_.begin(); k<stat_mean_.end(); ++k)
306
{ stat_mean_[k].release();}
307
stat_sigma_.release();
308
}
309
310
}
// namespace STK
311
STK_DiagGaussianParameters.h
In this file we define the Parameters classes for Diagonal Gaussian mixture models.
STK::MultidimRegression
The MultidimRegression class allows to regress a multidimensional output variable among a multivariat...
Definition
STK_MultidimRegression.h:52
STK::TRange< UnknownSize >
Index sub-vector region: Specialization when the size is unknown.
Definition
STK_Range.h:265
STK
The namespace STK is the main domain space of the Statistical ToolKit project.
STK::ModelParameters
struct storing the parameters of the mixture.
Definition
STK_Clust_Util.h:60
projects
Clustering
src
STK_DiagGaussianParameters.cpp
Generated on Sat Feb 15 2025 12:07:15 for STK++ by
1.9.8