aGrUM 2.3.2
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-2025 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-2025 *
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
57
59
60namespace gum {
61
62 namespace learning {
63
64
73 class ScorefNML: public Score {
74 public:
75 // ##########################################################################
77 // ##########################################################################
79
81
100 const Prior& prior,
101 const std::vector< std::pair< std::size_t, std::size_t > >& ranges,
102 const Bijection< NodeId, std::size_t >& nodeId2columns
104
105
107
120 const Prior& prior,
121 const Bijection< NodeId, std::size_t >& nodeId2columns
123
125 ScorefNML(const ScorefNML& from);
126
129
131 virtual ScorefNML* clone() const;
132
134 virtual ~ScorefNML();
135
137
138
139 // ##########################################################################
141 // ##########################################################################
142
144
147
150
152
153
154 // ##########################################################################
156 // ##########################################################################
158
160
169 virtual std::string isPriorCompatible() const final;
170
172
182 virtual const Prior& internalPrior() const final;
183
185
186
188
190 static std::string isPriorCompatible(PriorType prior_type, double weight = 1.0f);
191
193
194 static std::string isPriorCompatible(const Prior& prior);
195
196
197 protected:
199
202 virtual double score_(const IdCondSet& idset) final;
203
204
205#ifndef DOXYGEN_SHOULD_SKIP_THIS
206
207 private:
209 NoPrior _internal_prior_;
210
213
214#endif /* DOXYGEN_SHOULD_SKIP_THIS */
215 };
216
217
218 } /* namespace learning */
219
220
221} /* namespace gum */
222
223// include the inlined functions if necessary
224#ifndef GUM_NO_INLINE
226#endif /* GUM_NO_INLINE */
227
228#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:83
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
virtual std::string isPriorCompatible() const final
indicates whether the prior is compatible (meaningful) with the score
ScorefNML & operator=(ScorefNML &&from)
move operator
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
virtual ScorefNML * clone() const
virtual copy constructor
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
virtual double score_(const IdCondSet &idset) final
returns the score for a given IdCondSet
virtual const Prior & internalPrior() const final
returns the internal prior of the score
ScorefNML(const ScorefNML &from)
copy constructor
virtual ~ScorefNML()
destructor
include the inlined functions if necessary
Definition CSVParser.h:54
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