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; }
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; }