SiGraph: sulcal graphs


topAdaptive.h
Go to the documentation of this file.
1
2#ifndef SI_MODEL_TOPADAPTIVE_H
3#define SI_MODEL_TOPADAPTIVE_H
4
5
6#include <si/model/adaptive.h>
7#include <si/model/topModel.h>
8#include <iostream>
9
10
11namespace sigraph
12{
13 class Learner;
14
15 class TopAdaptive : public Adaptive, public TopModel
16 {
17 public:
18 TopAdaptive( Model* submod = 0 );
20 virtual ~TopAdaptive();
21 virtual Model* clone() const;
22
24
27 virtual Model* model() { return( _model ); }
28 virtual void setModel( Model* subm ) { _model = subm; }
29
31 virtual double prop( const Clique* );
32 virtual double prop( const Clique* cl,
33 const std::map<Vertex*, std::string> & changes );
34 virtual bool doesOutputChange( const Clique* cl,
35 const std::map<Vertex*,
36 std::string> & changes ) const;
38 virtual bool openFile( const std::string & basename = "" );
40 virtual void closeFile();
42 virtual void subFiles( const std::string & prefix,
43 std::set<std::string> & listNames ) const;
45 virtual double printDescription( Clique* cl, bool = false );
47 virtual TopModel* topModel();
48 virtual const TopModel* topModel() const;
50
53
54 virtual void generateDataBase(Learner &learner, const std::string &prefix,
55 const std::list<Clique *> *lrnCliques,
56 const std::list<Clique *> *tstCliques,
57 int cycles, int cycles_tst);
58 virtual double eval( const Clique *);
59 //virtual void getVectors(LearnConstParam *lp);
60 virtual double errorRate() const;
61 virtual double genErrorRate() const;
62 virtual double relianceWeight() const;
63 virtual void init();
64 virtual bool checkLearnFinished();
67 virtual void forceLearnFinished();
68
69 virtual void resetStats();
70 virtual void trainStats(Learner &learner,
71 const std::list<Clique *> &cliques);
73
76
77 virtual void buildTree( Tree & tr ) const;
78 virtual void setBaseName( const std::string & basename );
80
81 protected:
83
84 private:
85 };
86
87 // Fonctions inline
88
89 inline Model* TopAdaptive::clone() const
90 {
91 return( new TopAdaptive( *this ) );
92 }
93
94
95 inline double TopAdaptive::relianceWeight() const
96 {
97 if( _model->isAdaptive() )
98 return static_cast<const Adaptive *>(_model)->relianceWeight();
99 return 1.;
100 }
101
102
103 inline double TopAdaptive::prop( const Clique* cl )
104 {
105 return( _model->prop( cl ) );
106 }
107
108
109 inline double TopAdaptive::printDescription( Clique* cl, bool naming )
110 {
111 return( _model->printDescription( cl, naming ) );
112 }
113
114
115 inline bool TopAdaptive::openFile( const std::string & basename )
116 {
117 return( _model->openFile( basename ) );
118 }
119
120
122 {
123 _model->closeFile();
124 }
125
126
127 inline void TopAdaptive::subFiles( const std::string & prefix,
128 std::set<std::string> & listNames ) const
129 {
130 _model->subFiles( prefix, listNames );
131 }
132
133
135 const std::string &prefix,
136 const std::list<Clique *> *lrnCliques,
137 const std::list<Clique *> *tstCliques,
138 int cycles, int cycles_tst)
139{
140 if (_model->isAdaptive())
141 ((Adaptive *) _model)->generateDataBase(learner, prefix,
142 lrnCliques, tstCliques, cycles, cycles_tst);
143}
144
145 inline double TopAdaptive::eval( const Clique * cl )
146 {
147 if( _model->isAdaptive() )
148 return( ((Adaptive *)_model)->eval( cl ) );
149 else return( 0. );
150 }
151
152
153 inline double TopAdaptive::errorRate() const
154 {
155 if( _model->isAdaptive() )
156 return( ((Adaptive *)_model)->errorRate() );
157 else return( 0. );
158 }
159
160
161 inline double TopAdaptive::genErrorRate() const
162 {
163 if( _model->isAdaptive() )
164 return( ((Adaptive *)_model)->genErrorRate() );
165 else return( 0. );
166 }
167
168
169 inline void TopAdaptive::init()
170 {
171 if( _model->isAdaptive() )
172 ((Adaptive *)_model)->init();
173 _ndata = 0;
174 }
175
176
178 {
179 if( _model->isAdaptive() )
180 ((Adaptive *)_model)->resetStats();
181 }
182
183
184 inline void TopAdaptive::trainStats(Learner &learner,
185 const std::list<Clique *> &cliques)
186 {
187 if( _model->isAdaptive() )
188 ((Adaptive *)_model)->trainStats(learner, cliques);
189 }
190
191
193 {
194 return( this );
195 }
196
197
198 inline const TopModel* TopAdaptive::topModel() const
199 {
200 return( this );
201 }
202
203 inline void TopAdaptive::setBaseName( const std::string & basename )
204 {
205 _model->setBaseName( basename );
206 }
207
208
210 {
211 if( !_learnfinished )
212 {
213 if( _model->isAdaptive() )
214 _learnfinished = ((Adaptive *)_model)->checkLearnFinished();
215 else
216 _learnfinished = true;
217 }
218 return( _learnfinished );
219 }
220
221
223 {
224 if( !_learnfinished && _model->isAdaptive() )
225 ((Adaptive *)_model)->forceLearnFinished();
226 _learnfinished = true;
227 }
228
229}
230
231#endif
232
Adaptive(Model *parent=0)
Definition adaptive.h:100
unsigned _ndata
Nombre d'exemples appris.
Definition adaptive.h:90
Classe Clique.
Definition clique.h:35
Séquence d'apprentissage, classe de base (abstraite).
Definition learner.h:22
Modèle pour l'évaluation de cliques de graphes (classe abstraite).
Definition model.h:26
virtual double prop(const Clique *cl, const std::map< Vertex *, std::string > &changes)
Donne le potentiel d'une clique, après une transformation de labels de noeuds, en ne le recalculant que...
virtual void setModel(Model *subm)
Definition topAdaptive.h:28
virtual void forceLearnFinished()
fait ce qu'il faut pour "fermer" l'apprentissage (remet le dernier mémo...)
virtual double genErrorRate() const
Taux d'erreur de généralisation.
virtual Model * clone() const
Duplication (fonction abstraite)
Definition topAdaptive.h:89
virtual double eval(const Clique *)
Evaluation (confiance dans la réponse au point donné) (fonction abstraite)
TopAdaptive(const TopAdaptive &a)
virtual void init()
Initialisation des parties adaptatives (fonction abstraite)
TopAdaptive & operator=(const TopAdaptive &m)
virtual void generateDataBase(Learner &learner, const std::string &prefix, const std::list< Clique * > *lrnCliques, const std::list< Clique * > *tstCliques, int cycles, int cycles_tst)
Apprentissage et test.
virtual void resetStats()
Vide toutes les stats (fonction abstraite)
virtual double prop(const Clique *)
Propagation (réponse du modèle)
virtual void subFiles(const std::string &prefix, std::set< std::string > &listNames) const
Donne la liste des fichiers sous le modèle.
virtual void buildTree(Tree &tr) const
(devrait être externe à la classe...)
TopAdaptive(Model *submod=0)
virtual void trainStats(Learner &learner, const std::list< Clique * > &cliques)
Ajout à la base de statistiques (fonction abstraite)
virtual bool openFile(const std::string &basename="")
Ouvre le(s) fichier(s) de sauvegardes des données reçues.
virtual double relianceWeight() const
Definition topAdaptive.h:95
virtual bool doesOutputChange(const Clique *cl, const std::map< Vertex *, std::string > &changes) const
tells whether a label change inpacts the model output or not.
virtual bool checkLearnFinished()
fonction non-const pcq elle peut positionner le flag
virtual TopModel * topModel()
Donne la base de l'arborescence (TopModel, s'il y en a)
virtual double printDescription(Clique *cl, bool=false)
Calcule le potentiel et garde le(s) vecteur(s) de description.
virtual void setBaseName(const std::string &basename)
virtual Model * model()
Definition topAdaptive.h:27
virtual double errorRate() const
Taux d'erreur d'apprentissage global.
virtual void closeFile()
Ferme le(s) fichier(s) de sauvegardes des données reçues.
TopModel(carto::AttributedObject *parent=0)
Definition topModel.h:83