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.
MLBase.h
Go to the documentation of this file.
1 
31 #ifndef GRT_MLBASE_HEADER
32 #define GRT_MLBASE_HEADER
33 
34 #include "GRTBase.h"
35 #include "../DataStructures/UnlabelledData.h"
36 #include "../DataStructures/ClassificationData.h"
37 #include "../DataStructures/RegressionData.h"
38 #include "../DataStructures/TimeSeriesClassificationData.h"
39 #include "../DataStructures/TimeSeriesClassificationDataStream.h"
40 
41 namespace GRT{
42 
43 #define DEFAULT_NULL_LIKELIHOOD_VALUE 0
44 #define DEFAULT_NULL_DISTANCE_VALUE 0
45 
49 class TrainingResultsObserverManager : public ObserverManager< TrainingResult >
50 {
51 public:
53  }
55 
56 };
57 
61 class TestResultsObserverManager : public ObserverManager< TestInstanceResult >
62 {
63 public:
65  }
66  virtual ~TestResultsObserverManager(){}
67 
68 };
69 
70 class MLBase : public GRTBase, public Observer< TrainingResult >, public Observer< TestInstanceResult >
71 {
72 public:
76  MLBase(void);
77 
81  virtual ~MLBase(void);
82 
89  bool copyMLBaseVariables(const MLBase *mlBase);
90 
98  virtual bool train(ClassificationData trainingData);
99 
106  virtual bool train_(ClassificationData &trainingData);
107 
115  virtual bool train(RegressionData trainingData);
116 
123  virtual bool train_(RegressionData &trainingData);
124 
132  virtual bool train(TimeSeriesClassificationData trainingData);
133 
140  virtual bool train_(TimeSeriesClassificationData &trainingData);
141 
149  virtual bool train(TimeSeriesClassificationDataStream trainingData);
150 
157  virtual bool train_(TimeSeriesClassificationDataStream &trainingData);
158 
166  virtual bool train(UnlabelledData trainingData);
167 
174  virtual bool train_(UnlabelledData &trainingData);
175 
183  virtual bool train(MatrixDouble data);
184 
191  virtual bool train_(MatrixDouble &data);
192 
200  virtual bool predict(VectorDouble inputVector);
201 
208  virtual bool predict_(VectorDouble &inputVector);
209 
217  virtual bool predict(MatrixDouble inputMatrix);
218 
225  virtual bool predict_(MatrixDouble &inputMatrix);
226 
234  virtual bool map(VectorDouble inputVector);
235 
242  virtual bool map_(VectorDouble &inputVector);
243 
251  virtual bool reset();
252 
259  virtual bool clear();
260 
267  virtual bool print() const;
268 
275  virtual bool save(const string filename) const;
276 
283  virtual bool load(const string filename);
284 
291  virtual bool saveModelToFile(string filename) const;
292 
300  virtual bool saveModelToFile(fstream &file) const;
301 
308  virtual bool loadModelFromFile(string filename);
309 
317  virtual bool loadModelFromFile(fstream &file);
318 
326  virtual bool getModel(ostream &stream) const;
327 
339  double inline scale(const double &x,const double &minSource,const double &maxSource,const double &minTarget,const double &maxTarget,const bool constrain=false){
340  if( constrain ){
341  if( x <= minSource ) return minTarget;
342  if( x >= maxSource ) return maxTarget;
343  }
344  if( minSource == maxSource ) return minTarget;
345  return (((x-minSource)*(maxTarget-minTarget))/(maxSource-minSource))+minTarget;
346  }
347 
353  virtual string getModelAsString() const;
354 
360  UINT getBaseType() const;
361 
368  UINT getNumInputFeatures() const;
369 
375  UINT getNumInputDimensions() const;
376 
382  UINT getNumOutputDimensions() const;
383 
390  UINT getMinNumEpochs() const;
391 
398  UINT getMaxNumEpochs() const;
399 
407  UINT getValidationSetSize() const;
408 
415 
421  double getMinChange() const;
422 
428  double getLearningRate() const;
429 
435  double getRootMeanSquaredTrainingError() const;
436 
442  double getTotalSquaredTrainingError() const;
443 
453  bool getUseValidationSet() const;
454 
461  bool getRandomiseTrainingOrder() const;
462 
468  bool getTrained() const;
469 
475  bool getModelTrained() const;
476 
482  bool getScalingEnabled() const;
483 
489  bool getIsBaseTypeClassifier() const;
490 
496  bool getIsBaseTypeRegressifier() const;
497 
503  bool getIsBaseTypeClusterer() const;
504 
510  bool enableScaling(bool useScaling);
511 
519  bool setMaxNumEpochs(const UINT maxNumEpochs);
520 
527  bool setMinNumEpochs(const UINT minNumEpochs);
528 
536  bool setMinChange(const double minChange);
537 
545  bool setLearningRate(double learningRate);
546 
555  bool setUseValidationSet(const bool useValidationSet);
556 
565  bool setValidationSetSize(const UINT validationSetSize);
566 
573  bool setRandomiseTrainingOrder(const bool randomiseTrainingOrder);
574 
581 
588 
595 
602 
609 
615  bool removeAllTestObservers();
616 
623 
630 
637 
643  const MLBase* getMLBasePointer() const;
644 
650  vector< TrainingResult > getTrainingResults() const;
651 
652 protected:
653 
659  bool saveBaseSettingsToFile(fstream &file) const;
660 
666  bool loadBaseSettingsFromFile(fstream &file);
667 
668  bool trained;
669  bool useScaling;
670  UINT baseType;
671  UINT numInputDimensions;
672  UINT numOutputDimensions;
673  UINT numTrainingIterationsToConverge;
674  UINT minNumEpochs;
675  UINT maxNumEpochs;
676  UINT validationSetSize;
677  double learningRate;
678  double minChange;
679  double rootMeanSquaredTrainingError;
680  double totalSquaredTrainingError;
681  bool useValidationSet;
682  bool randomiseTrainingOrder;
683  Random random;
684  vector< TrainingResult > trainingResults;
685  TrainingResultsObserverManager trainingResultsObserverManager;
686  TestResultsObserverManager testResultsObserverManager;
687 
688 public:
689 
690  enum BaseTypes{BASE_TYPE_NOT_SET=0,CLASSIFIER,REGRESSIFIER,CLUSTERER};
691 };
692 
693 } //End of namespace GRT
694 
695 #endif //GRT_MLBASE_HEADER
vector< TrainingResult > getTrainingResults() const
Definition: MLBase.cpp:330
virtual bool saveModelToFile(string filename) const
Definition: MLBase.cpp:135
UINT getMaxNumEpochs() const
Definition: MLBase.cpp:203
virtual bool reset()
Definition: MLBase.cpp:116
virtual bool getModel(ostream &stream) const
Definition: MLBase.cpp:174
double getRootMeanSquaredTrainingError() const
Definition: MLBase.cpp:215
virtual bool print() const
Definition: MLBase.cpp:129
virtual bool clear()
Definition: MLBase.cpp:118
bool setMaxNumEpochs(const UINT maxNumEpochs)
Definition: MLBase.cpp:237
virtual bool loadModelFromFile(string filename)
Definition: MLBase.cpp:157
bool loadBaseSettingsFromFile(fstream &file)
Definition: MLBase.cpp:357
Definition: AdaBoost.cpp:25
bool saveBaseSettingsToFile(fstream &file) const
Definition: MLBase.cpp:334
bool getModelTrained() const
Definition: MLBase.cpp:225
bool copyMLBaseVariables(const MLBase *mlBase)
Definition: MLBase.cpp:46
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:80
UINT getNumInputFeatures() const
Definition: MLBase.cpp:186
bool setMinChange(const double minChange)
Definition: MLBase.cpp:251
UINT getNumInputDimensions() const
Definition: MLBase.cpp:188
bool getRandomiseTrainingOrder() const
bool enableScaling(bool useScaling)
Definition: MLBase.cpp:235
bool setValidationSetSize(const UINT validationSetSize)
Definition: MLBase.cpp:268
double getLearningRate() const
Definition: MLBase.cpp:211
double getMinChange() const
virtual bool map_(VectorDouble &inputVector)
Definition: MLBase.cpp:114
UINT getBaseType() const
Definition: MLBase.cpp:184
double getTotalSquaredTrainingError() const
Definition: MLBase.cpp:219
bool setRandomiseTrainingOrder(const bool randomiseTrainingOrder)
Definition: MLBase.cpp:285
bool registerTrainingResultsObserver(Observer< TrainingResult > &observer)
Definition: MLBase.cpp:290
double scale(const double &x, const double &minSource, const double &maxSource, const double &minTarget, const double &maxTarget, const bool constrain=false)
Definition: MLBase.h:339
bool notifyTrainingResultsObservers(const TrainingResult &data)
Definition: MLBase.cpp:314
virtual bool predict(VectorDouble inputVector)
Definition: MLBase.cpp:104
MLBase(void)
Definition: MLBase.cpp:25
UINT getMinNumEpochs() const
Definition: MLBase.cpp:199
virtual bool predict_(VectorDouble &inputVector)
Definition: MLBase.cpp:106
virtual ~MLBase(void)
Definition: MLBase.cpp:42
This file contains the GRTBase class. This is the core base class for all the GRT modules...
bool setUseValidationSet(const bool useValidationSet)
Definition: MLBase.cpp:280
bool getIsBaseTypeClusterer() const
Definition: MLBase.cpp:233
MLBase * getMLBasePointer()
Definition: MLBase.cpp:322
bool removeAllTestObservers()
Definition: MLBase.cpp:310
UINT getValidationSetSize() const
Definition: MLBase.cpp:207
virtual bool map(VectorDouble inputVector)
Definition: MLBase.cpp:112
bool getTrained() const
Definition: MLBase.cpp:223
bool registerTestResultsObserver(Observer< TestInstanceResult > &observer)
Definition: MLBase.cpp:294
bool getIsBaseTypeRegressifier() const
Definition: MLBase.cpp:231
virtual bool load(const string filename)
Definition: MLBase.cpp:153
UINT getNumOutputDimensions() const
Definition: MLBase.cpp:190
bool removeTrainingResultsObserver(const Observer< TrainingResult > &observer)
Definition: MLBase.cpp:298
UINT getNumTrainingIterationsToConverge() const
Definition: MLBase.cpp:192
bool removeAllTrainingObservers()
Definition: MLBase.cpp:306
bool setLearningRate(double learningRate)
Definition: MLBase.cpp:260
bool getIsBaseTypeClassifier() const
Definition: MLBase.cpp:229
virtual string getModelAsString() const
Definition: MLBase.cpp:176
bool notifyTestResultsObservers(const TestInstanceResult &data)
Definition: MLBase.cpp:318
bool getUseValidationSet() const
bool setMinNumEpochs(const UINT minNumEpochs)
Definition: MLBase.cpp:246
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:82
bool getScalingEnabled() const
Definition: MLBase.cpp:227
bool removeTestResultsObserver(const Observer< TestInstanceResult > &observer)
Definition: MLBase.cpp:302
virtual bool save(const string filename) const
Definition: MLBase.cpp:131