GestureRecognitionToolkit
Version: 0.2.5
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
|
Public Member Functions | |
DecisionTree (const DecisionTreeNode &decisionTreeNode=DecisionTreeClusterNode(), const UINT minNumSamplesPerNode=5, const UINT maxDepth=10, const bool removeFeaturesAtEachSplit=false, const Tree::TrainingMode trainingMode=Tree::TrainingMode::BEST_ITERATIVE_SPILT, const UINT numSplittingSteps=100, const bool useScaling=false) | |
DecisionTree (const DecisionTree &rhs) | |
virtual | ~DecisionTree (void) |
DecisionTree & | operator= (const DecisionTree &rhs) |
virtual bool | deepCopyFrom (const Classifier *classifier) override |
virtual bool | train_ (ClassificationData &trainingData) override |
virtual bool | predict_ (VectorFloat &inputVector) override |
virtual bool | clear () override |
virtual bool | recomputeNullRejectionThresholds () override |
virtual bool | save (std::fstream &file) const override |
virtual bool | load (std::fstream &file) override |
virtual bool | getModel (std::ostream &stream) const override |
DecisionTreeNode * | deepCopyTree () const |
DecisionTreeNode * | deepCopyDecisionTreeNode () const |
const DecisionTreeNode * | getTree () const |
Tree::TrainingMode | getTrainingMode () const |
UINT | getNumSplittingSteps () const |
UINT | getMinNumSamplesPerNode () const |
UINT | getMaxDepth () const |
UINT | getPredictedNodeID () const |
bool | getRemoveFeaturesAtEachSplit () const |
bool | setTrainingMode (const Tree::TrainingMode trainingMode) |
bool | setNumSplittingSteps (const UINT numSplittingSteps) |
bool | setMinNumSamplesPerNode (const UINT minNumSamplesPerNode) |
bool | setMaxDepth (const UINT maxDepth) |
bool | setRemoveFeaturesAtEachSplit (const bool removeFeaturesAtEachSplit) |
GRT_DEPRECATED_MSG ("setRemoveFeaturesAtEachSpilt(const bool removeFeaturesAtEachSpilt) is deprecated, use setRemoveFeaturesAtEachSplit(const bool removeFeaturesAtEachSplit) instead", bool setRemoveFeaturesAtEachSpilt(const bool removeFeaturesAtEachSpilt)) | |
bool | setDecisionTreeNode (const DecisionTreeNode &node) |
Public Member Functions inherited from Classifier | |
Classifier (const std::string &classifierId="") | |
virtual | ~Classifier (void) |
bool | copyBaseVariables (const Classifier *classifier) |
virtual bool | reset () |
virtual bool | computeAccuracy (const ClassificationData &data, Float &accuracy) |
std::string | getClassifierType () const |
bool | getSupportsNullRejection () const |
bool | getNullRejectionEnabled () const |
Float | getNullRejectionCoeff () const |
Float | getMaximumLikelihood () const |
Float | getBestDistance () const |
Float | getPhase () const |
Float | getTrainingSetAccuracy () const |
virtual UINT | getNumClasses () const |
UINT | getClassLabelIndexValue (const UINT classLabel) const |
UINT | getPredictedClassLabel () const |
VectorFloat | getClassLikelihoods () const |
VectorFloat | getClassDistances () const |
VectorFloat | getNullRejectionThresholds () const |
Vector< UINT > | getClassLabels () const |
Vector< MinMax > | getRanges () const |
bool | enableNullRejection (const bool useNullRejection) |
virtual bool | setNullRejectionCoeff (const Float nullRejectionCoeff) |
virtual bool | setNullRejectionThresholds (const VectorFloat &newRejectionThresholds) |
bool | getTimeseriesCompatible () const |
Classifier * | create () const |
GRT_DEPRECATED_MSG ("createNewInstance is deprecated, use create instead.", Classifier *createNewInstance() const ) | |
GRT_DEPRECATED_MSG ("createInstanceFromString is deprecated, use create instead.", static Classifier *createInstanceFromString(const std::string &id)) | |
Classifier * | deepCopy () const |
const Classifier * | getClassifierPointer () const |
const Classifier & | getBaseClassifier () const |
Public Member Functions inherited from MLBase | |
MLBase (const std::string &id="", const BaseType type=BASE_TYPE_NOT_SET) | |
virtual | ~MLBase (void) |
bool | copyMLBaseVariables (const MLBase *mlBase) |
virtual bool | train (ClassificationData trainingData) |
virtual bool | train (RegressionData trainingData) |
virtual bool | train_ (RegressionData &trainingData) |
virtual bool | train (RegressionData trainingData, RegressionData validationData) |
virtual bool | train_ (RegressionData &trainingData, RegressionData &validationData) |
virtual bool | train (TimeSeriesClassificationData trainingData) |
virtual bool | train_ (TimeSeriesClassificationData &trainingData) |
virtual bool | train (ClassificationDataStream trainingData) |
virtual bool | train_ (ClassificationDataStream &trainingData) |
virtual bool | train (UnlabelledData trainingData) |
virtual bool | train_ (UnlabelledData &trainingData) |
virtual bool | train (MatrixFloat data) |
virtual bool | train_ (MatrixFloat &data) |
virtual bool | predict (VectorFloat inputVector) |
virtual bool | predict (MatrixFloat inputMatrix) |
virtual bool | predict_ (MatrixFloat &inputMatrix) |
virtual bool | map (VectorFloat inputVector) |
virtual bool | map_ (VectorFloat &inputVector) |
virtual bool | print () const |
virtual bool | save (const std::string &filename) const |
virtual bool | load (const std::string &filename) |
GRT_DEPRECATED_MSG ("saveModelToFile(std::string filename) is deprecated, use save(const std::string &filename) instead", virtual bool saveModelToFile(const std::string &filename) const ) | |
GRT_DEPRECATED_MSG ("saveModelToFile(std::fstream &file) is deprecated, use save(std::fstream &file) instead", virtual bool saveModelToFile(std::fstream &file) const ) | |
GRT_DEPRECATED_MSG ("loadModelFromFile(std::string filename) is deprecated, use load(const std::string &filename) instead", virtual bool loadModelFromFile(const std::string &filename)) | |
GRT_DEPRECATED_MSG ("loadModelFromFile(std::fstream &file) is deprecated, use load(std::fstream &file) instead", virtual bool loadModelFromFile(std::fstream &file)) | |
virtual std::string | getModelAsString () const |
DataType | getInputType () const |
DataType | getOutputType () const |
BaseType | getType () const |
UINT | getNumInputFeatures () const |
UINT | getNumInputDimensions () const |
UINT | getNumOutputDimensions () const |
UINT | getMinNumEpochs () const |
UINT | getMaxNumEpochs () const |
UINT | getBatchSize () const |
UINT | getNumRestarts () const |
UINT | getValidationSetSize () const |
UINT | getNumTrainingIterationsToConverge () const |
Float | getMinChange () const |
Float | getLearningRate () const |
Float | getRMSTrainingError () const |
GRT_DEPRECATED_MSG ("getRootMeanSquaredTrainingError() is deprecated, use getRMSTrainingError() instead", Float getRootMeanSquaredTrainingError() const ) | |
Float | getTotalSquaredTrainingError () const |
Float | getRMSValidationError () const |
Float | getValidationSetAccuracy () const |
VectorFloat | getValidationSetPrecision () const |
VectorFloat | getValidationSetRecall () const |
bool | getUseValidationSet () const |
bool | getRandomiseTrainingOrder () const |
bool | getTrained () const |
GRT_DEPRECATED_MSG ("getModelTrained() is deprecated, use getTrained() instead", bool getModelTrained() const ) | |
bool | getConverged () const |
bool | getScalingEnabled () const |
bool | getIsBaseTypeClassifier () const |
bool | getIsBaseTypeRegressifier () const |
bool | getIsBaseTypeClusterer () const |
bool | getTrainingLoggingEnabled () const |
bool | getTestingLoggingEnabled () const |
bool | enableScaling (const bool useScaling) |
bool | setMaxNumEpochs (const UINT maxNumEpochs) |
bool | setBatchSize (const UINT batchSize) |
bool | setMinNumEpochs (const UINT minNumEpochs) |
bool | setNumRestarts (const UINT numRestarts) |
bool | setMinChange (const Float minChange) |
bool | setLearningRate (const Float learningRate) |
bool | setUseValidationSet (const bool useValidationSet) |
bool | setValidationSetSize (const UINT validationSetSize) |
bool | setRandomiseTrainingOrder (const bool randomiseTrainingOrder) |
bool | setTrainingLoggingEnabled (const bool loggingEnabled) |
bool | setTestingLoggingEnabled (const bool loggingEnabled) |
bool | registerTrainingResultsObserver (Observer< TrainingResult > &observer) |
bool | registerTestResultsObserver (Observer< TestInstanceResult > &observer) |
bool | removeTrainingResultsObserver (const Observer< TrainingResult > &observer) |
bool | removeTestResultsObserver (const Observer< TestInstanceResult > &observer) |
bool | removeAllTrainingObservers () |
bool | removeAllTestObservers () |
bool | notifyTrainingResultsObservers (const TrainingResult &data) |
bool | notifyTestResultsObservers (const TestInstanceResult &data) |
MLBase * | getMLBasePointer () |
const MLBase * | getMLBasePointer () const |
Vector< TrainingResult > | getTrainingResults () const |
Public Member Functions inherited from GRTBase | |
GRTBase (const std::string &id="") | |
virtual | ~GRTBase (void) |
bool | copyGRTBaseVariables (const GRTBase *GRTBase) |
GRT_DEPRECATED_MSG ("getClassType is deprecated, use getId() instead!", std::string getClassType() const ) | |
std::string | getId () const |
std::string | getLastWarningMessage () const |
std::string | getLastErrorMessage () const |
std::string | getLastInfoMessage () const |
bool | setInfoLoggingEnabled (const bool loggingEnabled) |
bool | setWarningLoggingEnabled (const bool loggingEnabled) |
bool | setErrorLoggingEnabled (const bool loggingEnabled) |
bool | setDebugLoggingEnabled (const bool loggingEnabled) |
GRTBase * | getGRTBasePointer () |
const GRTBase * | getGRTBasePointer () const |
Float | scale (const Float &x, const Float &minSource, const Float &maxSource, const Float &minTarget, const Float &maxTarget, const bool constrain=false) |
Float | SQR (const Float &x) const |
Public Member Functions inherited from Observer< TrainingResult > | |
virtual void | notify (const TrainingResult &data) |
Public Member Functions inherited from Observer< TestInstanceResult > | |
virtual void | notify (const TestInstanceResult &data) |
Static Public Member Functions | |
static std::string | getId () |
Static Public Member Functions inherited from Classifier | |
static Classifier * | create (const std::string &id) |
static Vector< std::string > | getRegisteredClassifiers () |
Static Public Member Functions inherited from GRTBase | |
static std::string | getGRTVersion (bool returnRevision=true) |
static std::string | getGRTRevison () |
Protected Member Functions | |
bool | loadLegacyModelFromFile_v1 (std::fstream &file) |
bool | loadLegacyModelFromFile_v2 (std::fstream &file) |
bool | loadLegacyModelFromFile_v3 (std::fstream &file) |
bool | trainTree (ClassificationData trainingData, const ClassificationData &trainingDataCopy, const ClassificationData &validationData, Vector< UINT > features) |
DecisionTreeNode * | buildTree (ClassificationData &trainingData, DecisionTreeNode *parent, Vector< UINT > features, const Vector< UINT > &classLabels, UINT nodeID) |
Float | getNodeDistance (const VectorFloat &x, const UINT nodeID) |
Float | getNodeDistance (const VectorFloat &x, const VectorFloat &y) |
Protected Member Functions inherited from Classifier | |
bool | saveBaseSettingsToFile (std::fstream &file) const |
bool | loadBaseSettingsFromFile (std::fstream &file) |
Protected Member Functions inherited from MLBase | |
bool | saveBaseSettingsToFile (std::fstream &file) const |
bool | loadBaseSettingsFromFile (std::fstream &file) |
Protected Attributes | |
DecisionTreeNode * | decisionTreeNode |
std::map< UINT, VectorFloat > | nodeClusters |
VectorFloat | classClusterMean |
VectorFloat | classClusterStdDev |
DecisionTreeNode * | tree |
UINT | minNumSamplesPerNode |
UINT | maxDepth |
UINT | numSplittingSteps |
bool | removeFeaturesAtEachSplit |
Tree::TrainingMode | trainingMode |
Protected Attributes inherited from Classifier | |
bool | supportsNullRejection |
bool | useNullRejection |
UINT | numClasses |
UINT | predictedClassLabel |
UINT | classifierMode |
Float | nullRejectionCoeff |
Float | maxLikelihood |
Float | bestDistance |
Float | phase |
Float | trainingSetAccuracy |
VectorFloat | classLikelihoods |
VectorFloat | classDistances |
VectorFloat | nullRejectionThresholds |
Vector< UINT > | classLabels |
Vector< MinMax > | ranges |
Protected Attributes inherited from MLBase | |
bool | trained |
bool | useScaling |
bool | converged |
DataType | inputType |
DataType | outputType |
BaseType | baseType |
UINT | numInputDimensions |
UINT | numOutputDimensions |
UINT | numTrainingIterationsToConverge |
UINT | minNumEpochs |
UINT | maxNumEpochs |
UINT | batchSize |
UINT | validationSetSize |
UINT | numRestarts |
Float | learningRate |
Float | minChange |
Float | rmsTrainingError |
Float | rmsValidationError |
Float | totalSquaredTrainingError |
Float | validationSetAccuracy |
bool | useValidationSet |
bool | randomiseTrainingOrder |
VectorFloat | validationSetPrecision |
VectorFloat | validationSetRecall |
Random | random |
Vector< TrainingResult > | trainingResults |
TrainingResultsObserverManager | trainingResultsObserverManager |
TestResultsObserverManager | testResultsObserverManager |
TrainingLog | trainingLog |
TestingLog | testingLog |
Protected Attributes inherited from GRTBase | |
std::string | classId |
Stores the name of the class (e.g., MinDist) | |
DebugLog | debugLog |
ErrorLog | errorLog |
InfoLog | infoLog |
WarningLog | warningLog |
Additional Inherited Members | |
Public Types inherited from Classifier | |
enum | ClassifierModes { STANDARD_CLASSIFIER_MODE =0, TIMESERIES_CLASSIFIER_MODE } |
typedef std::map< std::string, Classifier *(*)() > | StringClassifierMap |
Public Types inherited from MLBase | |
enum | BaseType { BASE_TYPE_NOT_SET =0, CLASSIFIER, REGRESSIFIER, CLUSTERER, PRE_PROCSSING, POST_PROCESSING, FEATURE_EXTRACTION, CONTEXT } |
Static Protected Member Functions inherited from Classifier | |
static StringClassifierMap * | getMap () |
Definition at line 47 of file DecisionTree.h.
DecisionTree::DecisionTree | ( | const DecisionTreeNode & | decisionTreeNode = DecisionTreeClusterNode() , |
const UINT | minNumSamplesPerNode = 5 , |
||
const UINT | maxDepth = 10 , |
||
const bool | removeFeaturesAtEachSplit = false , |
||
const Tree::TrainingMode | trainingMode = Tree::TrainingMode::BEST_ITERATIVE_SPILT , |
||
const UINT | numSplittingSteps = 100 , |
||
const bool | useScaling = false |
||
) |
Default Constructor
decisionTreeNode | sets the type of decision tree node that will be used when training a new decision tree model. Default: DecisionTreeClusterNode |
minNumSamplesPerNode | sets the minimum number of samples that are allowed per node, if the number of samples is below that, the node will become a leafNode. Default value = 5 |
maxDepth | sets the maximum depth of the tree. Default value = 10 |
removeFeaturesAtEachSplit | sets if a feature is removed at each split so it can not be used again. Default value = false |
trainingMode | sets the training mode, this should be one of the TrainingMode enums. Default value = BEST_ITERATIVE_SPILT |
numSplittingSteps | sets the number of steps that will be used to search for the best spliting value for each node. Default value = 100 |
useScaling | sets if the training and real-time data should be scaled between [0 1]. Default value = false |
Definition at line 33 of file DecisionTree.cpp.
DecisionTree::DecisionTree | ( | const DecisionTree & | rhs | ) |
Defines the copy constructor.
rhs | the instance from which all the data will be copied into this instance |
Definition at line 48 of file DecisionTree.cpp.
|
virtual |
Default Destructor
Definition at line 56 of file DecisionTree.cpp.
|
overridevirtual |
This overrides the clear function in the Classifier base class. It will completely clear the ML module, removing any trained model and setting all the base variables to their default values.
Reimplemented from Classifier.
Definition at line 499 of file DecisionTree.cpp.
DecisionTreeNode * DecisionTree::deepCopyDecisionTreeNode | ( | ) | const |
Gets a pointer to the decision tree node. NULL will be returned if the decision tree node has not been set.
Definition at line 842 of file DecisionTree.cpp.
|
overridevirtual |
This is required for the Gesture Recognition Pipeline for when the pipeline.setClassifier(...) method is called. It clones the data from the Base Class Classifier pointer (which should be pointing to an DecisionTree instance) into this instance
classifier | a pointer to the Classifier Base Class, this should be pointing to another DecisionTree instance |
Reimplemented from Classifier.
Definition at line 96 of file DecisionTree.cpp.
DecisionTreeNode * DecisionTree::deepCopyTree | ( | ) | const |
Deep copies the decision tree, returning a pointer to the new decision tree. The user is in charge of cleaning up the memory so must delete the pointer when they no longer need it. NULL will be returned if the tree could not be copied.
Definition at line 833 of file DecisionTree.cpp.
|
static |
Gets a string that represents the DecisionTree class.
Definition at line 28 of file DecisionTree.cpp.
UINT DecisionTree::getMaxDepth | ( | ) | const |
Gets the maximum depth of the tree.
Definition at line 1022 of file DecisionTree.cpp.
UINT DecisionTree::getMinNumSamplesPerNode | ( | ) | const |
Gets the minimum number of samples that are allowed per node, if the number of samples at a node is below this value then the node will automatically become a leaf node.
Definition at line 1018 of file DecisionTree.cpp.
|
overridevirtual |
This function adds the current model to the formatted stream. This function should be overwritten by the derived class.
file | a reference to the stream the model will be added to |
Reimplemented from MLBase.
Definition at line 825 of file DecisionTree.cpp.
UINT DecisionTree::getNumSplittingSteps | ( | ) | const |
Gets the number of steps that will be used to search for the best spliting value for each node.
If the trainingMode is set to BEST_ITERATIVE_SPILT, then the numSplittingSteps controls how many iterative steps there will be per feature. If the trainingMode is set to BEST_RANDOM_SPLIT, then the numSplittingSteps controls how many random searches there will be per feature.
Definition at line 1014 of file DecisionTree.cpp.
UINT DecisionTree::getPredictedNodeID | ( | ) | const |
This function returns the predictedNodeID, this is ID of the leaf node that was reached during the last prediction call
Definition at line 1026 of file DecisionTree.cpp.
bool DecisionTree::getRemoveFeaturesAtEachSplit | ( | ) | const |
Gets if a feature is removed at each split so it can not be used again.
Definition at line 1035 of file DecisionTree.cpp.
Tree::TrainingMode DecisionTree::getTrainingMode | ( | ) | const |
Gets the current training mode. This will be one of the TrainingModes enums.
Definition at line 1010 of file DecisionTree.cpp.
const DecisionTreeNode * DecisionTree::getTree | ( | ) | const |
Gets a pointer to the decision tree. NULL will be returned if the decision tree model has not be trained.
Definition at line 851 of file DecisionTree.cpp.
DecisionTree::GRT_DEPRECATED_MSG | ( | "setRemoveFeaturesAtEachSpilt(const bool removeFeaturesAtEachSpilt) is | deprecated, |
use setRemoveFeaturesAtEachSplit(const bool removeFeaturesAtEachSplit) instead" | , | ||
bool | setRemoveFeaturesAtEachSpiltconst bool removeFeaturesAtEachSpilt | ||
) |
|
overridevirtual |
This loads a trained DecisionTree model from a file. This overrides the load function in the Classifier base class.
file | a reference to the file the DecisionTree model will be loaded from |
Reimplemented from MLBase.
Definition at line 622 of file DecisionTree.cpp.
|
protected |
Read the ranges if needed
Definition at line 1084 of file DecisionTree.cpp.
DecisionTree & DecisionTree::operator= | ( | const DecisionTree & | rhs | ) |
Defines how the data from the rhs DecisionTree should be copied to this DecisionTree
rhs | another instance of a DecisionTree |
Definition at line 66 of file DecisionTree.cpp.
|
overridevirtual |
This predicts the class of the inputVector. This overrides the predict function in the Classifier base class.
inputVector | the input Vector to classify |
Reimplemented from MLBase.
Definition at line 423 of file DecisionTree.cpp.
|
overridevirtual |
This recomputes the null rejection thresholds for each of the classes in the DecisionTree model. The DecisionTree model needs to be trained first before this function can be called.
Reimplemented from Classifier.
Definition at line 519 of file DecisionTree.cpp.
|
overridevirtual |
This saves the trained DecisionTree model to a file. This overrides the save function in the Classifier base class.
file | a reference to the file the DecisionTree model will be saved to |
Reimplemented from MLBase.
Definition at line 541 of file DecisionTree.cpp.
bool DecisionTree::setDecisionTreeNode | ( | const DecisionTreeNode & | node | ) |
Sets the decision tree node, this will be used as the starting node the next time the DecisionTree model is trained.
Definition at line 855 of file DecisionTree.cpp.
bool DecisionTree::setMaxDepth | ( | const UINT | maxDepth | ) |
Sets the maximum depth of the tree, any node that reaches this depth will automatically become a leaf node. Value must be larger than zero.
maxDepth | the maximum depth of the tree |
Definition at line 1066 of file DecisionTree.cpp.
bool DecisionTree::setMinNumSamplesPerNode | ( | const UINT | minNumSamplesPerNode | ) |
Sets the minimum number of samples that are allowed per node, if the number of samples at a node is below this value then the node will automatically become a leaf node. Value must be larger than zero.
minNumSamplesPerNode | the minimum number of samples that are allowed per node |
Definition at line 1057 of file DecisionTree.cpp.
bool DecisionTree::setNumSplittingSteps | ( | const UINT | numSplittingSteps | ) |
Sets the number of steps that will be used to search for the best spliting value for each node.
If the trainingMode is set to BEST_ITERATIVE_SPILT, then the numSplittingSteps controls how many iterative steps there will be per feature. If the trainingMode is set to BEST_RANDOM_SPLIT, then the numSplittingSteps controls how many random searches there will be per feature.
A higher value will increase the chances of building a better model, but will take longer to train the model. Value must be larger than zero.
numSplittingSteps | sets the number of steps that will be used to search for the best spliting value for each node. |
Definition at line 1048 of file DecisionTree.cpp.
bool DecisionTree::setRemoveFeaturesAtEachSplit | ( | const bool | removeFeaturesAtEachSplit | ) |
Sets if a feature is removed at each split so it can not be used again. If true then the best feature selected at each node will be removed so it can not be used in any children of that node. If false, then the feature that provides the best spilt at each node will be used, regardless of how many times it has been used again.
removeFeaturesAtEachSplit | if true, then each feature is removed at each spilt so it can not be used again |
Definition at line 1075 of file DecisionTree.cpp.
bool DecisionTree::setTrainingMode | ( | const Tree::TrainingMode | trainingMode | ) |
Sets the training mode, this should be one of the TrainingModes enums.
trainingMode | the new trainingMode, this should be one of the TrainingModes enums |
Definition at line 1039 of file DecisionTree.cpp.
|
overridevirtual |
This trains the DecisionTree model, using the labelled classification data. This overrides the train function in the Classifier base class.
trainingData | a reference to the training data |
Reimplemented from MLBase.
Definition at line 132 of file DecisionTree.cpp.