GestureRecognitionToolkit  Version: 0.2.0
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
DecisionTree.h
Go to the documentation of this file.
1 
35 #ifndef GRT_DECISION_TREE_HEADER
36 #define GRT_DECISION_TREE_HEADER
37 
38 #include "../../CoreModules/Classifier.h"
39 #include "../../CoreAlgorithms/Tree/Tree.h"
40 #include "DecisionTreeNode.h"
44 
45 GRT_BEGIN_NAMESPACE
46 
47 class GRT_API DecisionTree : public Tree, public Classifier
48 {
49 public:
61  DecisionTree(const DecisionTreeNode &decisionTreeNode = DecisionTreeClusterNode(),const UINT minNumSamplesPerNode=5,const UINT maxDepth=10,const bool removeFeaturesAtEachSpilt = false,const UINT trainingMode = BEST_ITERATIVE_SPILT,const UINT numSplittingSteps=100,const bool useScaling=false );
62 
68  DecisionTree(const DecisionTree &rhs);
69 
73  virtual ~DecisionTree(void);
74 
81  DecisionTree &operator=(const DecisionTree &rhs);
82 
90  virtual bool deepCopyFrom(const Classifier *classifier);
91 
99  virtual bool train_(ClassificationData &trainingData);
100 
108  virtual bool predict_(VectorFloat &inputVector);
109 
116  virtual bool clear();
117 
124  virtual bool recomputeNullRejectionThresholds();
125 
133  virtual bool save( std::fstream &file ) const;
134 
142  virtual bool load( std::fstream &file );
143 
151  virtual bool getModel( std::ostream &stream ) const;
152 
161 
167  const DecisionTreeNode* getTree() const;
168 
174  DecisionTreeNode* deepCopyDecisionTreeNode() const;
175 
181  bool setDecisionTreeNode( const DecisionTreeNode &node );
182 
188  static std::string getId();
189 
190  //Tell the compiler we are using the base class train method to stop hidden virtual function warnings
191  using MLBase::save;
192  using MLBase::load;
193  using MLBase::train_;
194  using MLBase::predict_;
195  using MLBase::print;
196 
197 protected:
198  bool loadLegacyModelFromFile_v1( std::fstream &file );
199  bool loadLegacyModelFromFile_v2( std::fstream &file );
200  bool loadLegacyModelFromFile_v3( std::fstream &file );
201 
202  DecisionTreeNode* buildTree(ClassificationData &trainingData, DecisionTreeNode *parent, Vector< UINT > features, const Vector< UINT > &classLabels, UINT nodeID );
203  Float getNodeDistance( const VectorFloat &x, const UINT nodeID );
204  Float getNodeDistance( const VectorFloat &x, const VectorFloat &y );
205 
206  DecisionTreeNode* decisionTreeNode;
207  std::map< UINT, VectorFloat > nodeClusters;
208  VectorFloat classClusterMean;
209  VectorFloat classClusterStdDev;
210  static RegisterClassifierModule< DecisionTree > registerModule;
211  static std::string id;
212 };
213 
214 GRT_END_NAMESPACE
215 
216 #endif //GRT_DECISION_TREE_HEADER
217 
virtual bool recomputeNullRejectionThresholds()
Definition: Classifier.h:237
This file implements a DecisionTreeTripleFeatureNode, which is a specific type of node used for a Dec...
virtual bool predict_(VectorFloat &inputVector)
Definition: MLBase.cpp:115
virtual bool getModel(std::ostream &stream) const
Definition: MLBase.cpp:190
This file implements a DecisionTreeClusterNode, which is a specific type of node used for a DecisionT...
virtual bool save(const std::string filename) const
Definition: MLBase.cpp:143
virtual bool load(const std::string filename)
Definition: MLBase.cpp:167
virtual bool deepCopyFrom(const Classifier *classifier)
Definition: Classifier.h:63
Definition: Tree.h:38
virtual bool print() const
Definition: MLBase.cpp:141
const Node * getTree() const
Definition: Tree.cpp:88
This file implements a DecisionTreeNode, which is a specific base node used for a DecisionTree...
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:91
virtual Node * deepCopyTree() const
Definition: Tree.cpp:79
virtual bool clear()
Definition: Classifier.cpp:142
This file implements a DecisionTreeThresholdNode, which is a specific type of node used for a Decisio...