GestureRecognitionToolkit  Version: 1.0 Revision: 04-03-15
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
LDA.h
Go to the documentation of this file.
1 
31 #ifndef GRT_LDA_HEADER
32 #define GRT_LDA_HEADER
33 
34 #include "../../CoreModules/Classifier.h"
35 #include "../../Util/LUDecomposition.h"
36 
37 namespace GRT{
38 
40 public:
41  LDAClassModel(){
42  classLabel = 0;
43  priorProb = 0;
44  }
45 
46  ~LDAClassModel(){
47 
48  }
49 
50  UINT getNumDimensions() const { return (UINT)weights.size(); }
51 
52  UINT classLabel;
53  double priorProb;
54  VectorDouble weights;
55 
56 };
57 
58 class LDA : public Classifier
59 {
60 public:
64  LDA(bool useScaling=false,bool useNullRejection=true,double nullRejectionCoeff=10.0);
65 
69  virtual ~LDA(void);
70 
77  LDA &operator=(const LDA &rhs){
78  if( this != &rhs ){
79  //LDA variables
80  this->models = rhs.models;
81 
82  //Classifier variables
83  copyBaseVariables( (Classifier*)&rhs );
84  }
85  return *this;
86  }
87 
88  //Override the base class methods
96  virtual bool deepCopyFrom(const Classifier *classifier){
97  if( classifier == NULL ) return false;
98 
99  if( this->getClassifierType() == classifier->getClassifierType() ){
100 
101  LDA *ptr = (LDA*)classifier;
102  //Clone the LDA values
103  this->models = ptr->models;
104 
105  //Clone the classifier variables
106  return copyBaseVariables( classifier );
107  }
108  return false;
109  }
110 
118  virtual bool train(ClassificationData trainingData);
119 
127  virtual bool predict(VectorDouble inputVector);
128 
136  virtual bool saveModelToFile(fstream &file) const;
137 
145  virtual bool loadModelFromFile(fstream &file);
146 
147  //Getters
148  vector< LDAClassModel > getModels(){ if( trained ){ return models; } return vector< LDAClassModel >(); }
149 
150  //Setters
151 
152  //Tell the compiler we are using the base class train method to stop hidden virtual function warnings
155 
156 private:
157  MatrixDouble computeBetweenClassScatterMatrix( ClassificationData &data );
158  MatrixDouble computeWithinClassScatterMatrix( ClassificationData &data );
159 
160  vector< LDAClassModel > models;
161 };
162 
163 } //End of namespace GRT
164 
165 #endif //GRT_LDA_HEADER
166 
LDA(bool useScaling=false, bool useNullRejection=true, double nullRejectionCoeff=10.0)
Definition: LDA.cpp:25
virtual bool saveModelToFile(string filename) const
Definition: MLBase.cpp:135
Definition: LDA.h:58
virtual ~LDA(void)
Definition: LDA.cpp:39
virtual bool deepCopyFrom(const Classifier *classifier)
Definition: LDA.h:96
bool copyBaseVariables(const Classifier *classifier)
Definition: Classifier.cpp:91
virtual bool loadModelFromFile(string filename)
Definition: MLBase.cpp:157
Definition: AdaBoost.cpp:25
virtual bool saveModelToFile(fstream &file) const
Definition: LDA.cpp:254
LDA & operator=(const LDA &rhs)
Definition: LDA.h:77
string getClassifierType() const
Definition: Classifier.cpp:159
virtual bool predict(VectorDouble inputVector)
Definition: LDA.cpp:199
virtual bool loadModelFromFile(fstream &file)
Definition: LDA.cpp:291
virtual bool train(ClassificationData trainingData)
Definition: LDA.cpp:43