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.
KNN.h
Go to the documentation of this file.
1 
42 #ifndef GRT_KNN_HEADER
43 #define GRT_KNN_HEADER
44 
45 #include "../../CoreModules/Classifier.h"
46 
47 namespace GRT{
48 
49 #define BIG_DISTANCE 99e+99
50 
51 class KNN : public Classifier
52 {
53 public:
65  KNN(UINT K=10,bool useScaling=false,bool useNullRejection=false,double nullRejectionCoeff=10.0,bool searchForBestKValue = false,UINT minKSearchValue = 1,UINT maxKSearchValue = 10);
66 
72  KNN(const KNN &rhs);
73 
77  virtual ~KNN(void);
78 
85  KNN &operator=(const KNN &rhs);
86 
94  virtual bool deepCopyFrom(const Classifier *classifier);
95 
103  virtual bool train_(ClassificationData &trainingData);
104 
112  virtual bool predict_(VectorDouble &inputVector);
113 
120  virtual bool clear();
121 
129  virtual bool saveModelToFile(fstream &file) const;
130 
138  virtual bool loadModelFromFile(fstream &file);
139 
147  virtual bool recomputeNullRejectionThresholds();
148 
154  UINT getK(){ return K; }
155 
163 
164  //Setters
171  bool setK(UINT K);
172 
180 
188 
197 
205  bool setNullRejectionCoeff(double nullRejectionCoeff);
206 
215 
216  //Tell the compiler we are using the following functions from the MLBase class to stop hidden virtual function warnings
219  using MLBase::train;
220  using MLBase::train_;
221  using MLBase::predict;
222  using MLBase::predict_;
223 
224 protected:
225  bool train_(const ClassificationData &trainingData,const UINT K);
226  bool predict(const VectorDouble &inputVector,const UINT K);
227  bool loadLegacyModelFromFile( fstream &file );
228  double computeEuclideanDistance(const VectorDouble &a,const VectorDouble &b);
229  double computeCosineDistance(const VectorDouble &a,const VectorDouble &b);
230  double computeManhattanDistance(const VectorDouble &a,const VectorDouble &b);
231 
232  UINT K;
238  VectorDouble trainingMu;
239  VectorDouble trainingSigma;
240 
242 
243 public:
244  enum DistanceMethods{EUCLIDEAN_DISTANCE=0,COSINE_DISTANCE,MANHATTAN_DISTANCE};
245 
246 };
247 
248 } //End of namespace GRT
249 
250 #endif //GRT_KNN_HEADER
251 
UINT maxKSearchValue
The minimum K value to start the search from
Definition: KNN.h:236
virtual bool saveModelToFile(string filename) const
Definition: MLBase.cpp:135
bool searchForBestKValue
The distance method used to compute the distance between each data point
Definition: KNN.h:234
bool setK(UINT K)
Definition: KNN.cpp:684
UINT getDistanceMethod()
Definition: KNN.h:162
virtual bool loadModelFromFile(string filename)
Definition: MLBase.cpp:157
bool enableBestKValueSearch(bool searchForBestKValue)
Definition: KNN.cpp:702
Definition: AdaBoost.cpp:25
bool setDistanceMethod(UINT distanceMethod)
Definition: KNN.cpp:716
static RegisterClassifierModule< KNN > registerModule
Holds the stddev of the max-class distance of the training data for each of classes ...
Definition: KNN.h:241
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:80
KNN(UINT K=10, bool useScaling=false, bool useNullRejection=false, double nullRejectionCoeff=10.0, bool searchForBestKValue=false, UINT minKSearchValue=1, UINT maxKSearchValue=10)
virtual bool deepCopyFrom(const Classifier *classifier)
Definition: KNN.cpp:83
virtual bool train_(ClassificationData &trainingData)
Definition: KNN.cpp:106
bool loadLegacyModelFromFile(fstream &file)
Definition: KNN.cpp:760
VectorDouble trainingMu
Holds the trainingData to perform the predictions
Definition: KNN.h:238
virtual bool clear()
Definition: KNN.cpp:465
virtual bool predict(VectorDouble inputVector)
Definition: MLBase.cpp:104
Definition: KNN.h:51
virtual bool predict_(VectorDouble &inputVector)
Definition: MLBase.cpp:106
bool setMaxKSearchValue(UINT maxKSearchValue)
Definition: KNN.cpp:697
UINT getK()
Definition: KNN.h:154
VectorDouble trainingSigma
Holds the average max-class distance of the training data for each of classes
Definition: KNN.h:239
virtual bool recomputeNullRejectionThresholds()
Definition: KNN.cpp:665
bool setMinKSearchValue(UINT minKSearchValue)
Definition: KNN.cpp:692
virtual bool predict_(VectorDouble &inputVector)
Definition: KNN.cpp:316
ClassificationData trainingData
The maximum K value to end the search at
Definition: KNN.h:237
UINT minKSearchValue
Sets if the best K value should be searched for or if the model should be trained with K ...
Definition: KNN.h:235
virtual bool saveModelToFile(fstream &file) const
Definition: KNN.cpp:478
KNN & operator=(const KNN &rhs)
Definition: KNN.cpp:65
virtual ~KNN(void)
Definition: KNN.cpp:61
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:82
UINT distanceMethod
The number of neighbours to search for
Definition: KNN.h:233
virtual bool loadModelFromFile(fstream &file)
Definition: KNN.cpp:531
bool setNullRejectionCoeff(double nullRejectionCoeff)
Definition: KNN.cpp:707