UnlabelledClassificationData::UnlabelledClassificationData(UINT numDimensions,string datasetName,string infoText):debugLog("[DEBUG ULCD]"),errorLog("[ERROR ULCD]"),warningLog("[WARNING ULCD]") {
    this->datasetName = datasetName;
    this->numDimensions = numDimensions;
    this->infoText = infoText;
    totalNumSamples = 0;
    crossValidationSetup = false;
    useExternalRanges = false;
    if( numDimensions > 0 ) setNumDimensions( numDimensions );
}
LabelledClassificationData::LabelledClassificationData(UINT numDimensions,string datasetName,string infoText){
    this->datasetName = datasetName;
    this->numDimensions = numDimensions;
    this->infoText = infoText;
    totalNumSamples = 0;
    crossValidationSetup = false;
    useExternalRanges = false;
    allowNullGestureClass = false;
    if( numDimensions > 0 ) setNumDimensions( numDimensions );
    debugLog.setProceedingText("[DEBUG LCD]");
    errorLog.setProceedingText("[ERROR LCD]");
    warningLog.setProceedingText("[WARNING LCD]");
}
Esempio n. 3
0
GRT_BEGIN_NAMESPACE

ClassificationData::ClassificationData(const UINT numDimensions,const std::string datasetName,const std::string infoText){
    this->datasetName = datasetName;
    this->numDimensions = numDimensions;
    this->infoText = infoText;
    totalNumSamples = 0;
    crossValidationSetup = false;
    useExternalRanges = false;
    allowNullGestureClass = true;
    if( numDimensions > 0 ) setNumDimensions( numDimensions );
    infoLog.setProceedingText("[ClassificationData]");
    debugLog.setProceedingText("[DEBUG ClassificationData]");
    errorLog.setProceedingText("[ERROR ClassificationData]");
    warningLog.setProceedingText("[WARNING ClassificationData]");
}
GRT_BEGIN_NAMESPACE

TimeSeriesClassificationData::TimeSeriesClassificationData(UINT numDimensions,std::string datasetName,std::string infoText){
    debugLog.setProceedingText("[DEBUG TSCD]");
    errorLog.setProceedingText("[ERROR TSCD]");
    warningLog.setProceedingText("[WARNING TSCD]");

    this->numDimensions = numDimensions;
    this->datasetName = datasetName;
    this->infoText = infoText;
    totalNumSamples = 0;
    crossValidationSetup = false;
    useExternalRanges = false;
    allowNullGestureClass = true;
    if( numDimensions > 0 ){
        setNumDimensions(numDimensions);
    }
}
GRT_BEGIN_NAMESPACE

//Constructors and Destructors
ClassificationDataStream::ClassificationDataStream(const UINT numDimensions,const std::string datasetName,const std::string infoText){
    
    this->numDimensions= numDimensions;
    this->datasetName = datasetName;
    this->infoText = infoText;
    
    playbackIndex  = 0;
    trackingClass = false;
    useExternalRanges = false;
    debugLog.setProceedingText("[DEBUG ClassificationDataStream]");
    errorLog.setProceedingText("[ERROR ClassificationDataStream]");
    warningLog.setProceedingText("[WARNING ClassificationDataStream]");
    infoLog.setProceedingText("");

    if( numDimensions > 0 ){
        setNumDimensions(numDimensions);
    }
}
bool UnlabelledClassificationData::loadDatasetFromCSVFile(string filename){

    fstream file;
    string value;
    UINT numFeatures = 0;
    datasetName = "NOT_SET";
    infoText = "";

    //Clear any previous data
    clear();

    //Try and open the file
    file.open( filename.c_str(), std::ios::in );
    if( !file.is_open() ){
        errorLog << "loadDatasetFromCSVFile(string filename) - Failed to open file!" << endl;
        return false;
    }

    //Read the first line to work out how many features are in the data
    getline( file, value );
    for(UINT i=0; i<value.size(); i++){
        if( value[i] == ',' ){
            numFeatures++;
        }
    }

    //There will be one more feature at the end so add this
    numFeatures++;

    //If there are no commas in the first line then the data is not in the correct format
    if( numFeatures == 0 ){
        errorLog << "loadDatasetFromCSVFile(string filename) - Failed to find any features in the file - there appear to be no commas in the first row!" << endl;
        return false;
    }

    cout << "NUM FEATURES: " << numFeatures << endl;

    //Setup the labelled classification data
    setNumDimensions( numFeatures );

    //Reset the file to read from the start
    file.seekg( ios_base::beg );

    //Read the data
    UINT lineCounter = 0;
    vector< double > sample(numFeatures,0);
    while ( file.good() )
    {
        //Read the value
        getline( file, value, ',' );

        sample[ lineCounter ] = stringToDouble( value );

        if( ++lineCounter == numFeatures+1 ){
            lineCounter = 0;
            addSample(sample);
        }
    }

    file.close();
    return true;
}