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.
KMeans.h
Go to the documentation of this file.
1 
31 #ifndef GRT_KMEANS_HEADER
32 #define GRT_KMEANS_HEADER
33 
34 #include "../../Util/GRTCommon.h"
35 #include "../../CoreModules/Clusterer.h"
36 #include "../../DataStructures/ClassificationData.h"
37 #include "../../DataStructures/UnlabelledData.h"
38 
39 namespace GRT{
40 
41 class KMeans : public Clusterer{
42 
43 public:
47  KMeans(const UINT numClusters=10,const UINT minNumEpochs=5,const UINT maxNumEpochs=1000,const double minChange=1.0e-5,const bool computeTheta=true);
48 
54  KMeans(const KMeans &rhs);
55 
59  virtual ~KMeans();
60 
67  KMeans &operator=(const KMeans &rhs);
68 
76  virtual bool deepCopyFrom(const Clusterer *clusterer);
77 
84  virtual bool reset();
85 
91  virtual bool clear();
92 
100  bool trainModel(MatrixDouble &data);
101 
108  virtual bool train_(MatrixDouble &data);
109 
116  virtual bool train_(ClassificationData &trainingData);
117 
124  virtual bool train_(UnlabelledData &trainingData);
125 
132  virtual bool predict_(VectorDouble &inputVector);
133 
141  virtual bool saveModelToFile(fstream &file) const;
142 
150  virtual bool loadModelFromFile(fstream &file);
151 
152  //bool predict(VectorDouble inputVector,UINT &predictedClusterLabel,double &maxLikelihood,VectorDouble &clusterLikelihoods);
153 
154  //Getters
155  double getTheta(){ return finalTheta; }
156  bool getModelTrained(){ return trained; }
157 
158  VectorDouble getTrainingThetaLog() const{ return thetaTracker; }
159  MatrixDouble getClusters() const{ return clusters; }
160  vector< UINT > getClassLabelsVector() const{ return assign; }
161  vector< UINT > getClassCountVector() const{ return count; }
162 
163  //Setters
164  bool setComputeTheta(const bool computeTheta);
165 
173  bool setClusters(const MatrixDouble &clusters);
174 
175  //Tell the compiler we are using the following functions from the MLBase class to stop hidden virtual function warnings
178  using MLBase::train;
179  using MLBase::train_;
180  using MLBase::predict;
181  using MLBase::predict_;
182 
183 protected:
184  UINT estep(const MatrixDouble &data);
185  void mstep(const MatrixDouble &data);
186  double calculateTheta(const MatrixDouble &data);
187  inline double SQR(const double a) {return a*a;};
188 
189  bool computeTheta;
191  UINT nchg;
192  double finalTheta;
193  MatrixDouble clusters;
194  vector< UINT > assign, count;
195  VectorDouble thetaTracker;
196 
197 private:
198  static RegisterClustererModule< KMeans > registerModule;
199 
200 
201 };
202 
203 }//End of namespace GRT
204 
205 #endif //GRT_KMEANS_HEADER
virtual bool clear()
Definition: KMeans.cpp:498
virtual bool saveModelToFile(string filename) const
Definition: MLBase.cpp:135
virtual bool reset()
Definition: KMeans.cpp:485
UINT numTrainingSamples
Number of training examples.
Definition: KMeans.h:190
virtual bool loadModelFromFile(string filename)
Definition: MLBase.cpp:157
KMeans & operator=(const KMeans &rhs)
Definition: KMeans.cpp:80
Definition: AdaBoost.cpp:25
UINT numClusters
Number of clusters in the model.
Definition: Clusterer.h:249
virtual ~KMeans()
Definition: KMeans.cpp:77
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:80
KMeans(const UINT numClusters=10, const UINT minNumEpochs=5, const UINT maxNumEpochs=1000, const double minChange=1.0e-5, const bool computeTheta=true)
Definition: KMeans.cpp:29
virtual bool deepCopyFrom(const Clusterer *clusterer)
Definition: KMeans.cpp:100
virtual bool predict(VectorDouble inputVector)
Definition: MLBase.cpp:104
virtual bool predict_(VectorDouble &inputVector)
Definition: MLBase.cpp:106
bool trainModel(MatrixDouble &data)
Definition: KMeans.cpp:258
virtual bool saveModelToFile(fstream &file) const
Definition: KMeans.cpp:416
virtual bool train_(MatrixDouble &data)
Definition: KMeans.cpp:162
bool setClusters(const MatrixDouble &clusters)
Definition: KMeans.cpp:517
virtual bool predict_(VectorDouble &inputVector)
Definition: KMeans.cpp:199
virtual bool loadModelFromFile(fstream &file)
Definition: KMeans.cpp:444
UINT nchg
Number of values changes.
Definition: KMeans.h:191
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:82