Ignore:
Timestamp:
06/08/16 10:02:55 (8 years ago)
Author:
sherbold
Message:
  • fixed bug in GPTraining that led to the possibility that no classifier is generated in case of bad performance on the training data
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrossPare/src/de/ugoe/cs/cpdp/training/GPTraining.java

    r113 r125  
    484484                 
    485485                // number of runs, yields the best of these 
     486                double smallest_error_count_train = Double.MAX_VALUE;  
     487                Classifier bestTrain = null; 
    486488                for(int k=0; k < this.numberRuns; k++) { 
     489                    double[] errors_eval = {0.0, 0.0}; 
    487490                    Classifier classifier = new GPRun(); 
    488491                    ((GPRun)classifier).configure(this.populationSize, this.initMinDepth, this.initMaxDepth, this.tournamentSize, this.maxGenerations, this.errorType2Weight, this.maxDepth, this.maxNodes); 
     
    497500                            // if type1 and type2 errors are < 0.5 we allow the model in the candidates 
    498501                            errors = this.evaluate((GPRun)classifier, traindataSet.get(j)); 
     502                            errors_eval[0] += errors[0]; 
     503                            errors_eval[1] += errors[1]; 
    499504                            if((errors[0] < 0.5) && (errors[1] < 0.5)) { 
    500505                                candidates.add(classifier); 
    501506                            } 
    502507                        } 
     508                    } 
     509                     
     510                    // if the candidate made fewer errors it is now the best 
     511                    if(errors_eval[0] + errors_eval[1] < smallest_error_count_train) { 
     512                        bestTrain = classifier; 
     513                        smallest_error_count_train = errors_eval[0] + errors_eval[1]; 
    503514                    } 
    504515                } 
     
    528539                } 
    529540                 
    530                  
     541                if( best==null ) { 
     542                    best = bestTrain; 
     543                } 
    531544                // now we have the best classifier for this training data 
    532545                classifiers.add(best); 
Note: See TracChangeset for help on using the changeset viewer.