LabelledClassificationData LabelledClassificationData::getTrainingFoldData(UINT foldIndex){ LabelledClassificationData trainingData; trainingData.setNumDimensions( numDimensions ); trainingData.setAllowNullGestureClass( allowNullGestureClass ); if( !crossValidationSetup ){ errorLog << "getTrainingFoldData(UINT foldIndex) - Cross Validation has not been setup! You need to call the spiltDataIntoKFolds(UINT K,bool useStratifiedSampling) function first before calling this function!" << endl; return trainingData; } if( foldIndex >= kFoldValue ) return trainingData; //Add the data to the training set, this will consist of all the data that is NOT in the foldIndex UINT index = 0; for(UINT k=0; k<kFoldValue; k++){ if( k != foldIndex ){ for(UINT i=0; i<crossValidationIndexs[k].size(); i++){ index = crossValidationIndexs[k][i]; trainingData.addSample( data[ index ].getClassLabel(), data[ index ].getSample() ); } } } trainingData.sortClassLabels(); return trainingData; }
LabelledClassificationData LabelledClassificationData::getClassData(UINT classLabel) const{ LabelledClassificationData classData; classData.setNumDimensions( this->numDimensions ); classData.setAllowNullGestureClass( allowNullGestureClass ); for(UINT i=0; i<totalNumSamples; i++){ if( data[i].getClassLabel() == classLabel ){ classData.addSample(classLabel, data[i].getSample()); } } return classData; }
LabelledClassificationData LabelledClassificationData::getBootstrappedDataset(UINT numSamples){ Random rand; LabelledClassificationData newDataset; newDataset.setNumDimensions( getNumDimensions() ); newDataset.setAllowNullGestureClass( allowNullGestureClass ); if( numSamples == 0 ) numSamples = totalNumSamples; for(UINT i=0; i<numSamples; i++){ UINT randomIndex = rand.getRandomNumberInt(0, totalNumSamples); newDataset.addSample(data[randomIndex].getClassLabel(), data[randomIndex].getSample()); } return newDataset; }
LabelledClassificationData LabelledClassificationData::getTestFoldData(UINT foldIndex){ LabelledClassificationData testData; testData.setNumDimensions( numDimensions ); testData.setAllowNullGestureClass( allowNullGestureClass ); if( !crossValidationSetup ) return testData; if( foldIndex >= kFoldValue ) return testData; //Add the data to the training UINT index = 0; for(UINT i=0; i<crossValidationIndexs[ foldIndex ].size(); i++){ index = crossValidationIndexs[ foldIndex ][i]; testData.addSample( data[ index ].getClassLabel(), data[ index ].getSample() ); } return testData; }