Ejemplo n.º 1
0
bool BAG::saveModelToFile(fstream &file) const{
    
    if(!file.is_open())
	{
		errorLog <<"saveModelToFile(fstream &file) - The file is not open!" << endl;
		return false;
	}
    
    const UINT ensembleSize = getEnsembleSize();
    
	//Write the header info
	file << "GRT_BAG_MODEL_FILE_V2.0\n";
    
    //Write the classifier settings to the file
    if( !Classifier::saveBaseSettingsToFile(file) ){
        errorLog <<"saveModelToFile(fstream &file) - Failed to save classifier base settings to file!" << endl;
		return false;
    }
    
    if( trained ){
    
        file << "EnsembleSize: " << ensembleSize << endl;
        
        if( getEnsembleSize() > 0 ){
            
            //Save the weights
            file << "Weights: ";
            for(UINT i=0; i<getEnsembleSize(); i++){
                file << weights[i];
                if( i < ensembleSize-1 ) file << "\t";
                else file << "\n";
            }
            
            //Save the classifier types
            file << "ClassifierTypes: ";
            for(UINT i=0; i<getEnsembleSize(); i++){
                file << ensemble[i]->getClassifierType() << endl;
            }
            
            //Save the ensemble
            file << "Ensemble: \n";
            for(UINT i=0; i<getEnsembleSize(); i++){
                if( !ensemble[i]->saveModelToFile( file ) ){
                    errorLog <<"saveModelToFile(fstream &file) - Failed to save classifier " << i << " to file!" << endl;
                    return false;
                }
            }
        }
        
    }
    
    //NOTE: We do not need to close the file
    
    return true;
}
Ejemplo n.º 2
0
bool BAG::saveModelToFile(fstream &file){
    
    if(!file.is_open())
	{
		errorLog <<"saveModelToFile(fstream &file) - The file is not open!" << endl;
		return false;
	}
    
    const UINT ensembleSize = getEnsembleSize();
    
	//Write the header info
	file << "GRT_BAG_MODEL_FILE_V1.0\n";
    file << "Trained: " << trained << endl;
    file << "NumFeatures: " << numFeatures << endl;
	file << "NumClasses: " << numClasses << endl;
    file << "UseScaling: " << useScaling << endl;
    file << "UseNullRejection: " << useNullRejection << endl;
	
    ///Write the ranges if needed
    if( useScaling ){
        file << "Ranges: \n";
        for(UINT n=0; n<ranges.size(); n++){
            file << ranges[n].minValue << "\t" << ranges[n].maxValue << endl;
        }
    }
    
    //Save the class labels
    file << "ClassLabels: ";
    for(UINT i=0; i<numClasses; i++){
        file << classLabels[i];
        if( i < numClasses-1 ) file << "\t";
        else file << "\n";
    }
    
    file << "EnsembleSize: " << ensembleSize << endl;
    
    if( getEnsembleSize() > 0 ){
        
        //Save the weights
        file << "Weights: ";
        for(UINT i=0; i<getEnsembleSize(); i++){
            file << weights[i];
            if( i < ensembleSize-1 ) file << "\t";
            else file << "\n";
        }
        
        //Save the classifier types
        file << "ClassifierTypes: ";
        for(UINT i=0; i<getEnsembleSize(); i++){
            file << ensemble[i]->getClassifierType() << endl;
        }
        
        //Save the ensemble
        file << "Ensemble: \n";
        for(UINT i=0; i<getEnsembleSize(); i++){
            if( !ensemble[i]->saveModelToFile( file ) ){
                errorLog <<"saveModelToFile(fstream &file) - Failed to save classifier " << i << " to file!" << endl;
                return false;
            }
        }
    }
    
    //NOTE: We do not need to close the file
    
    return true;
}