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.
Clusterer.h
Go to the documentation of this file.
1 
31 #ifndef GRT_CLUSTERER_HEADER
32 #define GRT_CLUSTERER_HEADER
33 
34 #include "MLBase.h"
35 
36 namespace GRT{
37 
38 class Clusterer : public MLBase
39 {
40 public:
44  Clusterer(void);
45 
49  virtual ~Clusterer(void);
50 
58  virtual bool deepCopyFrom(const Clusterer *Clusterer){ return false; }
59 
67 
74  virtual bool train_(MatrixDouble &trainingData);
75 
82  virtual bool train_(ClassificationData &trainingData);
83 
90  virtual bool train_(UnlabelledData &trainingData);
91 
98  virtual bool reset();
99 
105  virtual bool clear();
106 
113  bool getConverged() const;
114 
120  UINT getNumClusters() const;
121 
127  UINT getPredictedClusterLabel() const;
128 
136  double getMaximumLikelihood() const;
137 
145  double getBestDistance() const;
146 
153  VectorDouble getClusterLikelihoods() const;
154 
161  VectorDouble getClusterDistances() const;
162 
168  vector< UINT > getClusterLabels() const;
169 
175  string getClustererType() const;
176 
185  bool setNumClusters(const UINT numClusters);
186 
190  typedef std::map< string, Clusterer*(*)() > StringClustererMap;
191 
198  static Clusterer* createInstanceFromString(string const &ClustererType);
199 
205  Clusterer* createNewInstance() const;
206 
214  Clusterer* deepCopy() const;
215 
221  const Clusterer& getBaseClusterer() const;
222 
228  static vector< string > getRegisteredClusterers();
229 
230  //Tell the compiler we are explicitly using the following classes from the base class (this stops hidden overloaded virtual function warnings)
231  using MLBase::train;
232 
233 protected:
239  bool saveClustererSettingsToFile(fstream &file) const;
240 
246  bool loadClustererSettingsFromFile(fstream &file);
247 
248  string clustererType;
249  UINT numClusters;
251  double maxLikelihood;
252  double bestDistance;
253  VectorDouble clusterLikelihoods;
254  VectorDouble clusterDistances;
255  vector< UINT > clusterLabels;
256  bool converged;
257  vector<MinMax> ranges;
258 
259  static StringClustererMap *getMap() {
260  if( !stringClustererMap ){ stringClustererMap = new StringClustererMap; }
261  return stringClustererMap;
262  }
263 
264 private:
265  static StringClustererMap *stringClustererMap;
266  static UINT numClustererInstances;
267 
268 };
269 
270 //These two functions/classes are used to register any new Classification Module with the Clusterer base class
271 template< typename T > Clusterer* getNewClassificationModuleInstance() { return new T; }
272 
273 template< typename T >
275 public:
276  RegisterClustererModule(string const &newClassificationModuleName) {
277  getMap()->insert( std::pair<string, Clusterer*(*)()>(newClassificationModuleName, &getNewClassificationModuleInstance< T > ) );
278  }
279 };
280 
281 } //End of namespace GRT
282 
283 #endif //GRT_CLUSTERER_HEADER
284 
double getBestDistance() const
Definition: Clusterer.cpp:241
virtual bool clear()
Definition: Clusterer.cpp:139
bool loadClustererSettingsFromFile(fstream &file)
Definition: Clusterer.cpp:176
double getMaximumLikelihood() const
Definition: Clusterer.cpp:237
virtual ~Clusterer(void)
Definition: Clusterer.cpp:77
Definition: AdaBoost.cpp:25
Clusterer * createNewInstance() const
Definition: Clusterer.cpp:35
virtual bool reset()
Definition: Clusterer.cpp:125
UINT numClusters
Number of clusters in the model.
Definition: Clusterer.h:249
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:80
bool saveClustererSettingsToFile(fstream &file) const
Definition: Clusterer.cpp:154
vector< UINT > getClusterLabels() const
Definition: Clusterer.cpp:253
bool setNumClusters(const UINT numClusters)
Definition: Clusterer.cpp:263
static Clusterer * createInstanceFromString(string const &ClustererType)
Definition: Clusterer.cpp:27
bool copyBaseVariables(const Clusterer *Clusterer)
Definition: Clusterer.cpp:84
bool getConverged() const
Definition: Clusterer.cpp:227
Clusterer * deepCopy() const
Definition: Clusterer.cpp:39
This is the main base class that all GRT machine learning algorithms should inherit from...
std::map< string, Clusterer *(*)() > StringClustererMap
Definition: Clusterer.h:190
VectorDouble getClusterLikelihoods() const
Definition: Clusterer.cpp:245
string getClustererType() const
Definition: Clusterer.cpp:257
virtual bool deepCopyFrom(const Clusterer *Clusterer)
Definition: Clusterer.h:58
virtual bool train_(MatrixDouble &trainingData)
Definition: Clusterer.cpp:111
static vector< string > getRegisteredClusterers()
Definition: Clusterer.cpp:52
const Clusterer & getBaseClusterer() const
Definition: Clusterer.cpp:259
VectorDouble getClusterDistances() const
Definition: Clusterer.cpp:249
UINT getPredictedClusterLabel() const
Definition: Clusterer.cpp:234
UINT getNumClusters() const
Definition: Clusterer.cpp:232
UINT predictedClusterLabel
Stores the predicted cluster label from the most recent predict( )
Definition: Clusterer.h:250