![]() |
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.
|
Public Member Functions | |
TimeSeriesClassificationData (UINT numDimensions=0, string datasetName="NOT_SET", string infoText="") | |
TimeSeriesClassificationData (const TimeSeriesClassificationData &rhs) | |
virtual | ~TimeSeriesClassificationData () |
TimeSeriesClassificationData & | operator= (const TimeSeriesClassificationData &rhs) |
TimeSeriesClassificationSample & | operator[] (const UINT &i) |
const TimeSeriesClassificationSample & | operator[] (const UINT &i) const |
void | clear () |
bool | setNumDimensions (const UINT numDimensions) |
bool | setDatasetName (const string datasetName) |
bool | setInfoText (const string infoText) |
bool | setClassNameForCorrespondingClassLabel (const string className, const UINT classLabel) |
bool | setAllowNullGestureClass (const bool allowNullGestureClass) |
bool | addSample (const UINT classLabel, const MatrixDouble &trainingSample) |
bool | removeLastSample () |
UINT | eraseAllSamplesWithClassLabel (const UINT classLabel) |
bool | relabelAllSamplesWithClassLabel (const UINT oldClassLabel, const UINT newClassLabel) |
bool | setExternalRanges (const vector< MinMax > &externalRanges, const bool useExternalRanges=false) |
bool | enableExternalRangeScaling (const bool useExternalRanges) |
bool | scale (const double minTarget, const double maxTarget) |
bool | scale (const vector< MinMax > &ranges, const double minTarget, const double maxTarget) |
bool | save (const string &filename) const |
bool | load (const string &filename) |
bool | saveDatasetToFile (const string filename) const |
bool | loadDatasetFromFile (const string filename) |
bool | saveDatasetToCSVFile (const string &filename) const |
bool | loadDatasetFromCSVFile (const string &filename) |
bool | printStats () const |
std::string | getStatsAsString () const |
TimeSeriesClassificationData | partition (const UINT partitionPercentage, const bool useStratifiedSampling=false) |
bool | merge (const TimeSeriesClassificationData &labelledData) |
bool | spiltDataIntoKFolds (const UINT K, const bool useStratifiedSampling=false) |
TimeSeriesClassificationData | getTrainingFoldData (const UINT foldIndex) const |
TimeSeriesClassificationData | getTestFoldData (const UINT foldIndex) const |
TimeSeriesClassificationData | getClassData (const UINT classLabel) const |
UnlabelledData | reformatAsUnlabelledData () const |
string | getDatasetName () const |
string | getInfoText () const |
UINT | getNumDimensions () const |
UINT | getNumSamples () const |
UINT | getNumClasses () const |
UINT | getMinimumClassLabel () const |
UINT | getMaximumClassLabel () const |
UINT | getClassLabelIndexValue (const UINT classLabel) const |
string | getClassNameForCorrespondingClassLabel (const UINT classLabel) const |
vector< MinMax > | getRanges () const |
vector< ClassTracker > | getClassTracker () const |
vector< TimeSeriesClassificationSample > | getClassificationData () const |
MatrixDouble | getDataAsMatrixDouble () const |
Protected Attributes | |
string | datasetName |
The name of the dataset. | |
string | infoText |
Some infoText about the dataset. | |
UINT | numDimensions |
The number of dimensions in the dataset. | |
UINT | totalNumSamples |
The total number of samples in the dataset. | |
UINT | kFoldValue |
The number of folds the dataset has been spilt into for cross valiation. | |
bool | crossValidationSetup |
A flag to show if the dataset is ready for cross validation. | |
bool | useExternalRanges |
A flag to show if the dataset should be scaled using the externalRanges values. | |
bool | allowNullGestureClass |
A flag that enables/disables a user from adding new samples with a class label matching the default null gesture label. | |
vector< MinMax > | externalRanges |
A vector containing a set of externalRanges set by the user. | |
vector< ClassTracker > | classTracker |
A vector of ClassTracker, which keeps track of the number of samples of each class. | |
vector< TimeSeriesClassificationSample > | data |
The labelled time series classification data. | |
vector< vector< UINT > > | crossValidationIndexs |
A vector to hold the indexs of the dataset for the cross validation. | |
DebugLog | debugLog |
Default debugging log. | |
ErrorLog | errorLog |
Default error log. | |
WarningLog | warningLog |
Default warning log. | |
Definition at line 40 of file TimeSeriesClassificationData.h.
GRT::TimeSeriesClassificationData::TimeSeriesClassificationData | ( | UINT | numDimensions = 0 , |
string | datasetName = "NOT_SET" , |
||
string | infoText = "" |
||
) |
Constructor, sets the name of the dataset and the number of dimensions of the training data. The name of the dataset should not contain any spaces.
UINT | numDimensions: the number of dimensions of the training data, should be an unsigned integer greater than 0 |
string | datasetName: the name of the dataset, should not contain any spaces |
string | infoText: some info about the data in this dataset, this can contain spaces |
Definition at line 25 of file TimeSeriesClassificationData.cpp.
GRT::TimeSeriesClassificationData::TimeSeriesClassificationData | ( | const TimeSeriesClassificationData & | rhs | ) |
Copy Constructor, copies the TimeSeriesClassificationData from the rhs instance to this instance
const | TimeSeriesClassificationData &rhs: another instance of the TimeSeriesClassificationData class from which the data will be copied to this instance |
Definition at line 42 of file TimeSeriesClassificationData.cpp.
|
virtual |
Default Destructor
Definition at line 51 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::addSample | ( | const UINT | classLabel, |
const MatrixDouble & | trainingSample | ||
) |
Adds a new labelled timeseries sample to the dataset. The dimensionality of the sample should match the number of dimensions in the dataset. The class label should be greater than zero (as zero is used as the default null rejection class label).
const | UINT classLabel: the class label of the corresponding sample |
const | MatrixDouble trainingSample: the new sample you want to add to the dataset. The dimensionality of this sample (i.e. Matrix columns) should match the number of dimensions in the dataset, the rows of the Matrix represent time and do not have to be any specific length |
Definition at line 131 of file TimeSeriesClassificationData.cpp.
void GRT::TimeSeriesClassificationData::clear | ( | ) |
Clears any previous training data and counters
Definition at line 73 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::enableExternalRangeScaling | ( | const bool | useExternalRanges | ) |
Sets if the dataset should be scaled using an external range (if useExternalRanges == true) or the ranges of the dataset (if false). The external ranges need to be set FIRST before calling this function, otherwise it will return false.
const | bool useExternalRanges: sets if these ranges should be used to scale the dataset |
Definition at line 278 of file TimeSeriesClassificationData.cpp.
UINT GRT::TimeSeriesClassificationData::eraseAllSamplesWithClassLabel | ( | const UINT | classLabel | ) |
Deletes from the dataset all the samples with a specific class label.
const | UINT classLabel: the class label of the samples you wish to delete from the dataset |
Definition at line 168 of file TimeSeriesClassificationData.cpp.
TimeSeriesClassificationData GRT::TimeSeriesClassificationData::getClassData | ( | const UINT | classLabel | ) | const |
Returns the all the data with the class label set by classLabel. The classLabel should be a valid classLabel, otherwise the dataset returned will be empty.
const | UINT classLabel: the class label of the class you want the data for |
Definition at line 962 of file TimeSeriesClassificationData.cpp.
|
inline |
Gets the classification data.
Definition at line 443 of file TimeSeriesClassificationData.h.
UINT GRT::TimeSeriesClassificationData::getClassLabelIndexValue | ( | const UINT | classLabel | ) | const |
Gets the index of the class label from the class tracker.
Definition at line 1016 of file TimeSeriesClassificationData.cpp.
string GRT::TimeSeriesClassificationData::getClassNameForCorrespondingClassLabel | ( | const UINT | classLabel | ) | const |
Gets the name of the class with a given class label. If the class label does not exist then the string "CLASS_LABEL_NOT_FOUND" will be returned.
Definition at line 1026 of file TimeSeriesClassificationData.cpp.
|
inline |
Gets the class tracker for each class in the dataset.
Definition at line 436 of file TimeSeriesClassificationData.h.
MatrixDouble GRT::TimeSeriesClassificationData::getDataAsMatrixDouble | ( | ) | const |
Gets the data as a MatrixDouble. This returns just the data, not the labels. This will be an M by N MatrixDouble, where M is the number of samples and N is the number of dimensions.
Definition at line 1057 of file TimeSeriesClassificationData.cpp.
|
inline |
Gets the name of the dataset.
Definition at line 366 of file TimeSeriesClassificationData.h.
|
inline |
Gets the infotext for the dataset
Definition at line 373 of file TimeSeriesClassificationData.h.
UINT GRT::TimeSeriesClassificationData::getMaximumClassLabel | ( | ) | const |
Gets the maximum class label in the dataset. If there are no values in the dataset then the value 0 will be returned.
Definition at line 1004 of file TimeSeriesClassificationData.cpp.
UINT GRT::TimeSeriesClassificationData::getMinimumClassLabel | ( | ) | const |
Gets the minimum class label in the dataset. If there are no values in the dataset then the value 99999 will be returned.
Definition at line 991 of file TimeSeriesClassificationData.cpp.
|
inline |
Gets the number of classes.
Definition at line 394 of file TimeSeriesClassificationData.h.
|
inline |
Gets the number of dimensions of the labelled classification data.
Definition at line 380 of file TimeSeriesClassificationData.h.
|
inline |
Gets the number of samples in the classification data across all the classes.
Definition at line 387 of file TimeSeriesClassificationData.h.
vector< MinMax > GRT::TimeSeriesClassificationData::getRanges | ( | ) | const |
Gets the ranges of the classification data.
Definition at line 1036 of file TimeSeriesClassificationData.cpp.
std::string GRT::TimeSeriesClassificationData::getStatsAsString | ( | ) | const |
Gets the dataset info (such as its name and infoText) and the stats (such as the number of examples, number of dimensions, number of classes, etc.) as a string.
Definition at line 663 of file TimeSeriesClassificationData.cpp.
TimeSeriesClassificationData GRT::TimeSeriesClassificationData::getTestFoldData | ( | const UINT | foldIndex | ) | const |
Returns the test dataset for the k-th fold for cross validation. The spiltDataIntoKFolds(UINT K) function should have been called once before using this function. The foldIndex should be in the range [0 K-1], where K is the number of folds the data was spilt into.
const | UINT foldIndex: the index of the fold you want the test data for, this should be in the range [0 K-1], where K is the number of folds the data was spilt into |
Definition at line 942 of file TimeSeriesClassificationData.cpp.
TimeSeriesClassificationData GRT::TimeSeriesClassificationData::getTrainingFoldData | ( | const UINT | foldIndex | ) | const |
Returns the training dataset for the k-th fold for cross validation. The spiltDataIntoKFolds(UINT K) function should have been called once before using this function. The foldIndex should be in the range [0 K-1], where K is the number of folds the data was spilt into.
const | UINT foldIndex: the index of the fold you want the training data for, this should be in the range [0 K-1], where K is the number of folds the data was spilt into |
Definition at line 914 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::load | ( | const string & | filename | ) |
Load the data from a file. If the file format ends in '.csv' then the function will try and load the data from a csv format. If this fails then it will try and load the data as a custom GRT file.
const | string &filename: the name of the file the data will be loaded from |
Definition at line 317 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::loadDatasetFromCSVFile | ( | const string & | filename | ) |
Loads the classification data from a CSV file. This assumes the data is formatted with each row representing a sample. The first column should represent the timeseries counter. The class label should be the second column followed by the sample data as the following N columns, where N is the number of dimensions in the data.
const | string &filename: the name of the file the data will be loaded from |
Definition at line 584 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::loadDatasetFromFile | ( | const string | filename | ) |
Loads the labelled timeseries classification data from a custom file format.
const | string filename: the name of the file the data will be loaded from |
Definition at line 377 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::merge | ( | const TimeSeriesClassificationData & | labelledData | ) |
Adds the data in the labelledData set to the current instance of the TimeSeriesClassificationData. The number of dimensions in both datasets must match. The names of the classes from the labelledData will be added to the current instance.
const | TimeSeriesClassificationData &labelledData: the dataset to add to this dataset |
Definition at line 784 of file TimeSeriesClassificationData.cpp.
TimeSeriesClassificationData & GRT::TimeSeriesClassificationData::operator= | ( | const TimeSeriesClassificationData & | rhs | ) |
Sets the equals operator, copies the data from the rhs instance to this instance
const | TimeSeriesClassificationData &rhs: another instance of the TimeSeriesClassificationData class from which the data will be copied to this instance |
Definition at line 53 of file TimeSeriesClassificationData.cpp.
|
inline |
Array Subscript Operator, returns the TimeSeriesClassificationSample at index i. It is up to the user to ensure that i is within the range of [0 totalNumSamples-1]
const | UINT &i: the index of the training sample you want to access. Must be within the range of [0 totalNumSamples-1] |
Definition at line 80 of file TimeSeriesClassificationData.h.
|
inline |
Const Array Subscript Operator, returns the TimeSeriesClassificationSample at index i. It is up to the user to ensure that i is within the range of [0 totalNumSamples-1]
const | UINT &i: the index of the training sample you want to access. Must be within the range of [0 totalNumSamples-1] |
Definition at line 91 of file TimeSeriesClassificationData.h.
TimeSeriesClassificationData GRT::TimeSeriesClassificationData::partition | ( | const UINT | partitionPercentage, |
const bool | useStratifiedSampling = false |
||
) |
Partitions the dataset into a training dataset (which is kept by this instance of the TimeSeriesClassificationData) and a testing/validation dataset (which is returned as a new instance of a TimeSeriesClassificationData).
const | UINT partitionPercentage: sets the percentage of data which remains in this instance, the remaining percentage of data is then returned as the testing/validation dataset |
const | bool useStratifiedSampling: sets if the dataset should be broken into homogeneous groups first before randomly being spilt, default value is false |
Definition at line 696 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::printStats | ( | ) | const |
Prints the dataset info (such as its name and infoText) and the stats (such as the number of examples, number of dimensions, number of classes, etc.) to the std out.
Definition at line 656 of file TimeSeriesClassificationData.cpp.
UnlabelledData GRT::TimeSeriesClassificationData::reformatAsUnlabelledData | ( | ) | const |
Reformats the TimeSeriesClassificationData as UnlabeledData so the data can be used to train unsupervised training algorithms such as K-Means Clustering and Gaussian Mixture Models.
Definition at line 972 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::relabelAllSamplesWithClassLabel | ( | const UINT | oldClassLabel, |
const UINT | newClassLabel | ||
) |
Relabels all the samples with the class label A with the new class label B.
const | UINT oldClassLabel: the class label of the samples you want to relabel |
const | UINT newClassLabel: the class label the samples will be relabelled with |
Definition at line 223 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::removeLastSample | ( | ) |
Removes the last training sample added to the dataset.
Definition at line 197 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::save | ( | const string & | filename | ) | const |
Saves the data to a file. If the file format ends in '.csv' then the data will be saved as comma-seperated-values, otherwise it will be saved to a custom GRT file (which contains the csv data with an additional header).
const | string &filename: the name of the file the data will be saved to |
Definition at line 306 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::saveDatasetToCSVFile | ( | const string & | filename | ) | const |
Saves the data to a CSV file. This will save the timeseries counter as the first column, the class label as the second column, and the sample data as the following N columns, where N is the number of dimensions in the data. Each row will represent a sample.
const | string &filename: the name of the file the data will be saved to |
Definition at line 555 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::saveDatasetToFile | ( | const string | filename | ) | const |
Saves the labelled timeseries classification data to a custom file format.
const | string filename: the name of the file the data will be saved to |
Definition at line 328 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::scale | ( | const double | minTarget, |
const double | maxTarget | ||
) |
Scales the dataset to the new target range.
const | double minTarget: the minimum range you want to scale the data to |
const | double maxTarget: the maximum range you want to scale the data to |
Definition at line 286 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::scale | ( | const vector< MinMax > & | ranges, |
const double | minTarget, | ||
const double | maxTarget | ||
) |
Scales the dataset to the new target range, using the vector of ranges as the min and max source ranges.
const | vector<MinMax> &ranges: a vector of source ranges, should have the same dimensions as your data |
const | double minTarget: the minimum range you want to scale the data to |
const | double maxTarget: the maximum range you want to scale the data to |
Definition at line 291 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setAllowNullGestureClass | ( | const bool | allowNullGestureClass | ) |
Sets if the user can add samples to the dataset with the label matching the GRT_DEFAULT_NULL_CLASS_LABEL. If the allowNullGestureClass is set to true, then the user can add labels matching the default null class label (which is normally 0). If the allowNullGestureClass is set to false, then the user will not be able to add samples that have a class label matching the default null class label.
const | bool allowNullGestureClass: true if you want to use the default null gesture as a label |
Definition at line 126 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setClassNameForCorrespondingClassLabel | ( | const string | className, |
const UINT | classLabel | ||
) |
Sets the name of the class with the given class label. There should not be any spaces in the className. Will return true if the name is set, or false if the class label does not exist.
const | className: the new name for the class |
const | UINT classLabel: the label ID that you want to set the class name for |
Definition at line 114 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setDatasetName | ( | const string | datasetName | ) |
Sets the name of the dataset. There should not be any spaces in the name. Will return true if the name is set, or false otherwise.
const | string datasetName: the new name of the dataset |
Definition at line 97 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setExternalRanges | ( | const vector< MinMax > & | externalRanges, |
const bool | useExternalRanges = false |
||
) |
Sets the external ranges of the dataset, also sets if the dataset should be scaled using these values. The dimensionality of the externalRanges vector should match the number of dimensions of this dataset.
const | vector< MinMax > &externalRanges: an N dimensional vector containing the min and max values of the expected ranges of the dataset. |
const | bool useExternalRanges: sets if these ranges should be used to scale the dataset, default value is false. |
Definition at line 268 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setInfoText | ( | const string | infoText | ) |
Sets the info string. This can be any string with information about how the training data was recorded for example.
const | string infoText: the infoText |
Definition at line 109 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::setNumDimensions | ( | const UINT | numDimensions | ) |
Sets the number of dimensions in the training data. This should be an unsigned integer greater than zero. This will clear any previous training data and counters. This function needs to be called before any new samples can be added to the dataset, unless the numDimensions variable was set in the constructor or some data was already loaded from a file
const | UINT numDimensions: the number of dimensions of the training data. Must be an unsigned integer greater than zero |
Definition at line 79 of file TimeSeriesClassificationData.cpp.
bool GRT::TimeSeriesClassificationData::spiltDataIntoKFolds | ( | const UINT | K, |
const bool | useStratifiedSampling = false |
||
) |
This function prepares the dataset for k-fold cross validation and should be called prior to calling the getTrainingFold(UINT foldIndex) or getTestingFold(UINT foldIndex) functions. It will spilt the dataset into K-folds, as long as K < M, where M is the number of samples in the dataset.
const | UINT K: the number of folds the dataset will be split into, K should be less than the number of samples in the dataset |
const | bool useStratifiedSampling: sets if the dataset should be broken into homogeneous groups first before randomly being spilt, default value is false |
Definition at line 809 of file TimeSeriesClassificationData.cpp.