SiGraph: sulcal graphs


subadsvm.h
Go to the documentation of this file.
1#ifndef SI_SUBADAPTIVE_SUBADSVM_H
2#define SI_SUBADAPTIVE_SUBADSVM_H
3
4#ifndef SI_NO_SVMLIB
5
7#include <si/sisvm/libsvm.h>
8#include <cartobase/object/attributed.h>
9#include <iostream>
10
11
12namespace sigraph
13{
14
16 {
17 public:
27
28 // SubAdSvm( const std::string name = "" );
29 SubAdSvm( const std::string name, const std::string file,
30 const std::string filename );
31 SubAdSvm( const SubAdSvm & sa );
32 virtual ~SubAdSvm();
33
34 virtual SubAdSvm & operator = ( const SubAdSvm & sa );
35
36 virtual SubAdaptive* clone() const;
37
39 virtual void prepare(const std::vector<double> &v);
40 virtual void prepare(const SiVectorLearnable &vl);
41 virtual void prepare( const double *vec, unsigned int size);
42 virtual struct svm_problem *prepare(const SiDBLearnable &vl);
43 virtual std::string getSvmMode(void) const;
44 virtual double learn(const SiDBLearnable &train);
45 virtual double getLearnedLabel(const SiVectorLearnable &vl) const;
47 const unsigned int nbfolds);
48 virtual double prop( const std::vector<double> & );
49 virtual double test(const SiVectorLearnable &vl);
51 virtual std::string chooseFilename( const std::string
52 & basename = "" ) const;
53 virtual void subFiles( const std::string & prefix,
54 std::set<std::string> & listNames ) const;
56 virtual void learnStats( const std::vector<double> &vec, double outp = 0 );
57 SvmMode svmMode() const { return _svmmode; }
58 void setSvmMode( SvmMode m ) { _svmmode = m; }
59 float qualitySlope() const { return _qualityslope; }
60 void setQualitySlope( float x ) { _qualityslope = x; }
63 bool qualityShiftedBadOutput() const { return _qualityshifted; }
64 void setQualityShiftedBadOutput ( bool x ) { _qualityshifted = x; }
65 struct svm_parameter &getSvmParameter() { return _svm_param; }
66
67 virtual void buildTree( Tree & tr ) const;
68 virtual void setBaseName( const std::string & basename );
69 // SAParser factory function
70 static void buildSubSvm( carto::AttributedObject* parent, Tree* t,
71 const std::string & filename );
72
73 virtual void setFileNames( const std::string & name )
74 { _netFileName = name; }
75 virtual std::string fileNames() const { return( _netFileName ); }
77 inline void setSvmWeight(int label, double weight)
78 { _svm_param.weight[label] = weight; };
79 void setGamma(double gamma) { _svm_param.gamma = gamma; };
80 void setC(double c) { _svm_param.C = c; };
81 void setEpsilon(double p) { _svm_param.p = p; };
82 void setNu(double nu) { _svm_param.nu = nu; };
83 double getGamma(void) { return _svm_param.gamma; }
84 double getC(void) { return _svm_param.C; }
85 double getEpsilon(void) { return _svm_param.p; }
86 double getNu(void) { return _svm_param.nu; }
87
88 protected:
89 svm_model *_svm;
91 std::string _netFileName;
92
93 private:
94 std::vector<double> _inputs;
95 SvmMode _svmmode;
96 float _qualityslope;
97 bool _qualityshifted;
98 struct svm_parameter _svm_param;
99 struct svm_problem _svm_prob;
100 struct svm_node *_svm_nodes;
101
102
103 static void parseSubSvm( carto::AttributedObject* parent, Tree* t,
104 SubAdSvm & sad );
105 };
106
107
108 // inline methods
110 {
111 if( this != &sa )
112 {
114
115 _svm = svm_clone_model(sa._svm, sa._svm_nodes, &_svm_nodes);
116 _svmmode = sa._svmmode;
118 _svm_param = sa._svm_param;
119 }
120 return( *this );
121 }
122
123
125 {
126 return( new SubAdSvm( *this ) );
127 }
128
129}
130
131
132namespace carto
133{
134 DECLARE_GENERIC_OBJECT_TYPE( svm_model * )
135}
136
137#endif // SI_NO_SVMLIB
138
139#endif
140
141
142
virtual SubAdResponse * train(AdaptiveLeaf &, const SiDBLearnable &tr, const SiDBLearnable &tst)
Apprentissage.
NonIncrementalSubAdaptive(const std::string name="")
virtual NonIncrementalSubAdaptive & operator=(const NonIncrementalSubAdaptive &sa)
Specialization for sigraph : Y as only one dim.
virtual void learnStats(const std::vector< double > &vec, double outp=0)
Ajout à la base de statistiques.
bool qualityShiftedBadOutput() const
in shitfed output mode (the new default), examples classified as bad always get an output >= 0....
Definition subadsvm.h:63
virtual double learn(const SiDBLearnable &train)
double getGamma(void)
Definition subadsvm.h:83
virtual std::string chooseFilename(const std::string &basename="") const
{\tt basename} doit être vide ou terminé par '/'
virtual SubAdResponse * crossvalidation(const SiDBLearnable &train, const unsigned int nbfolds)
virtual void buildTree(Tree &tr) const
Conversion en arbre (pour IO)
void setQualityShiftedBadOutput(bool x)
Definition subadsvm.h:64
virtual void setBaseName(const std::string &basename)
SubAdSvm(const SubAdSvm &sa)
virtual std::string fileNames() const
Definition subadsvm.h:75
virtual double prop(const std::vector< double > &)
Propagation (model answer).
virtual void subFiles(const std::string &prefix, std::set< std::string > &listNames) const
Donne la liste des fichiers sous le modèle.
virtual double getLearnedLabel(const SiVectorLearnable &vl) const
float qualitySlope() const
Definition subadsvm.h:59
virtual struct svm_problem * prepare(const SiDBLearnable &vl)
void setQualitySlope(float x)
Definition subadsvm.h:60
double getC(void)
Definition subadsvm.h:84
std::string _netFileName
Nom du fichier réseau.
Definition subadsvm.h:91
virtual void prepare(const double *vec, unsigned int size)
void setEpsilon(double p)
Definition subadsvm.h:81
virtual double test(const SiVectorLearnable &vl)
Test: met à jour le taux d'erreur de généralisation Renvoie la valeur prédite par le classifieur.
void setC(double c)
Definition subadsvm.h:80
virtual std::string getSvmMode(void) const
void setSvmWeight(int label, double weight)
Set / Get svm parameters.
Definition subadsvm.h:77
virtual void setFileNames(const std::string &name)
Noms des fichiers de sauvegardes (des réseaux de neurones par ex.)
Definition subadsvm.h:73
virtual SubAdSvm & operator=(const SubAdSvm &sa)
Definition subadsvm.h:109
virtual ~SubAdSvm()
void setNu(double nu)
Definition subadsvm.h:82
SvmMode svmMode() const
Definition subadsvm.h:57
void setSvmMode(SvmMode m)
Definition subadsvm.h:58
static void buildSubSvm(carto::AttributedObject *parent, Tree *t, const std::string &filename)
void setGamma(double gamma)
Definition subadsvm.h:79
struct svm_parameter & getSvmParameter()
Definition subadsvm.h:65
double getNu(void)
Definition subadsvm.h:86
virtual void prepare(const std::vector< double > &v)
Prépare le réseau avec les stats sur le vecteur etc.
virtual void prepare(const SiVectorLearnable &vl)
double getEpsilon(void)
Definition subadsvm.h:85
virtual SubAdaptive * clone() const
copie
Definition subadsvm.h:124
svm_model * _svm
Definition subadsvm.h:89
SubAdSvm(const std::string name, const std::string file, const std::string filename)
Sous-élément adaptatif (classe abstraite).
Definition subAdaptive.h:30
std::string name() const
SyntaxedObject< PropertySet > AttributedObject
#define DECLARE_GENERIC_OBJECT_TYPE(T)