aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
leastSquareTestPolicy.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
50#ifndef GUM_MULTI_DIM_FUNCTION_GRAPH_LEAST_SQUARE_TEST_POLICY_H
51#define GUM_MULTI_DIM_FUNCTION_GRAPH_LEAST_SQUARE_TEST_POLICY_H
52
53// ============================================================================
56// ============================================================================
58
59// ============================================================================
60
61namespace gum {
62
72 template < typename GUM_SCALAR >
73 class LeastSquareTestPolicy: public ITestPolicy< GUM_SCALAR > {
74 public:
75 // ############################################################################
77 // ############################################################################
79
80 // ============================================================================
82 // ============================================================================
83 LeastSquareTestPolicy() : ITestPolicy< GUM_SCALAR >(), _sumO_(0.0), _score_(0) {
84 GUM_CONSTRUCTOR(LeastSquareTestPolicy);
85 }
86
87 // ============================================================================
89 // ============================================================================
90 void* operator new(size_t s) { return SmallObjectAllocator::instance().allocate(s); }
91
92 void operator delete(void* p) {
94 }
95
96 // ============================================================================
98 // ============================================================================
99 virtual ~LeastSquareTestPolicy();
100
101 // ############################################################################
103 // ############################################################################
105
106 // ============================================================================
108 // ============================================================================
109 void addObservation(Idx attr, GUM_SCALAR value);
110
112
113
114 // ############################################################################
116 // ############################################################################
118
119 // ============================================================================
122 // ============================================================================
123 bool isTestRelevant() const { return (this->nbObservation() > 20); }
124
126
127
128 // ############################################################################
130 // ############################################################################
132
133 // ============================================================================
135 // ============================================================================
136 void computeScore();
137
138 // ============================================================================
140 // ============================================================================
141 double score();
142
143 // ============================================================================
145 // ============================================================================
146 double secondaryscore() const;
147
149
150
151 // ############################################################################
153 // ############################################################################
155
156 // ============================================================================
159 // ============================================================================
161
162 // ============================================================================
164 // ============================================================================
165 double sumValue() const { return _sumO_; }
166
167 // ============================================================================
169 // ============================================================================
171
172 // ============================================================================
174 // ============================================================================
176
177 // ============================================================================
179 // ============================================================================
181
182 private:
184 double _sumO_;
185
188
191
194
196 double _score_;
197 };
198
199} // End of namespace gum
200
202
203#endif /* GUM_MULTI_DIM_FUNCTION_GRAPH_LEAST_SQUARE_TEST_POLICY_H */
Headers of the ITestPolicy.
Idx nbObservation() const
Comptabilizes the new observation.
ITestPolicy()
Allocators and Deallocators redefinition.
Definition ITestPolicy.h:81
<agrum/base/multidim/core/testPolicy/leastSquareTestPolicy.h>
void add(const LeastSquareTestPolicy< GUM_SCALAR > &src)
Performs the merging of current LeastSquareTestPolicy instance with given instance.
virtual ~LeastSquareTestPolicy()
Destructor.
double _score_
Keeping computed score.
HashTable< Idx, Idx > _nbObsTable_
Nb Observation for each modality assumed by variable.
HashTable< Idx, double > _sumAttrTable_
Sum for each modality assumed by variable.
const HashTable< Idx, Idx > & nbObsTable() const
Returns nbobs per modality table (needed for the merging).
HashTable< Idx, LinkedList< double > * > _obsTable_
Not sure if needed.
bool isTestRelevant() const
Returns true if enough observation were made so that the test can be relevant.
void addObservation(Idx attr, GUM_SCALAR value)
Comptabilizes the new observation.
const HashTable< Idx, double > & sumAttrTable() const
Returns sum per modality table (needed for the merging).
void computeScore()
Returns the performance of current variable according to the test.
double sumValue() const
Returns global sum (needed for the merging).
const HashTable< Idx, LinkedList< double > * > & obsTable() const
Returns global sum (needed for the merging).
double secondaryscore() const
Returns a second criterion to severe ties.
double score()
Returns the performance of current variable according to the test.
static SmallObjectAllocator & instance()
void * allocate(const size_t &objectSize)
Allocates a block.
void deallocate(void *pDeallocatedObject, const size_t &objectSize)
Deallocates an object.
Headers of the ContingencyTable class.
Size Idx
Type for indexes.
Definition types.h:79
Template implementations for the LeastSquareTestPolicy class.
gum is the global namespace for all aGrUM entities
Definition agrum.h:46