aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
scorefNML.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2026 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2026 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
47
48#ifndef GUM_LEARNING_SCORE_FNML_H
49#define GUM_LEARNING_SCORE_FNML_H
50
51#include <string>
52
53#include <agrum/agrum.h>
54
58
59namespace gum {
60
61 namespace learning {
62
63
72 class ScorefNML: public Score {
73 public:
74 // ##########################################################################
76 // ##########################################################################
78
80
99 const Prior& prior,
100 const std::vector< std::pair< std::size_t, std::size_t > >& ranges,
101 const Bijection< NodeId, std::size_t >& nodeId2columns
103
104
106
119 const Prior& prior,
120 const Bijection< NodeId, std::size_t >& nodeId2columns
122
124 ScorefNML(const ScorefNML& from);
125
128
130 [[nodiscard]] ScorefNML* clone() const override;
131
133 ~ScorefNML() override;
134
136
137
138 // ##########################################################################
140 // ##########################################################################
141
143
146
149
151
152
153 // ##########################################################################
155 // ##########################################################################
157
159
168 std::string isPriorCompatible() const final;
169
171
181 const Prior& internalPrior() const final;
182
184
185
187
189 static std::string isPriorCompatible(PriorType prior_type, double weight = 1.0f);
190
192
193 static std::string isPriorCompatible(const Prior& prior);
194
195
196 protected:
198
201 double score_(const IdCondSet& idset) final;
202
203
204#ifndef DOXYGEN_SHOULD_SKIP_THIS
205
206 private:
208 NoPrior _internal_prior_;
209
212
213#endif /* DOXYGEN_SHOULD_SKIP_THIS */
214 };
215
216
217 } /* namespace learning */
218
219
220} /* namespace gum */
221
222// include the inlined functions if necessary
223#ifndef GUM_NO_INLINE
225#endif /* GUM_NO_INLINE */
226
227#endif /* GUM_LEARNING_SCORE_FNML_H */
the class for computing the log2 of the parametric complexity of an r-ary multinomial variable
the class used to read a row in the database and to transform it into a set of DBRow instances that c...
A class for storing a pair of sets of NodeIds, the second one corresponding to a conditional set.
Definition idCondSet.h:214
the no a priorclass: corresponds to 0 weight-sample
Definition noPrior.h:65
the base class for all a priori
Definition prior.h:81
const std::vector< std::pair< std::size_t, std::size_t > > & ranges() const
returns the current ranges
Score(const DBRowGeneratorParser &parser, const Prior &external_prior, const std::vector< std::pair< std::size_t, std::size_t > > &ranges, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
ScorefNML * clone() const override
virtual copy constructor
ScorefNML & operator=(ScorefNML &&from)
move operator
std::string isPriorCompatible() const final
indicates whether the prior is compatible (meaningful) with the score
const Prior & internalPrior() const final
returns the internal prior of the score
ScorefNML(const DBRowGeneratorParser &parser, const Prior &prior, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
ScorefNML & operator=(const ScorefNML &from)
copy operator
ScorefNML(const DBRowGeneratorParser &parser, const Prior &prior, const std::vector< std::pair< std::size_t, std::size_t > > &ranges, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
ScorefNML(ScorefNML &&from)
move constructor
ScorefNML(const ScorefNML &from)
copy constructor
~ScorefNML() override
destructor
double score_(const IdCondSet &idset) final
returns the score for a given IdCondSet
include the inlined functions if necessary
Definition CSVParser.h:55
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
STL namespace.
the no a priorclass: corresponds to 0 weight-sample
the base class for all the scores used for learning (BIC, BDeu, etc)
the class for computing fNML scores
the class for computing the log2 of the parametric complexity of an r-ary multinomial variable