oneR: fixed using wrong method of calculating lowest error rate
This commit is contained in:
		
							parent
							
								
									182eed641b
								
							
						
					
					
						commit
						9a164e9370
					
				@ -220,19 +220,22 @@ namespace ARFF {
 | 
			
		||||
            results.emplace(value, 0);
 | 
			
		||||
        }
 | 
			
		||||
        for (int i = 0; i < attribute->values.size(); ++i) {
 | 
			
		||||
            int resultsTotal = 0;
 | 
			
		||||
            if (attribute->values[i] == "?") { continue; }
 | 
			
		||||
            for (auto instance = database.begin(); instance != database.end(); ++instance) {
 | 
			
		||||
                if (instance->values[attributePos] != attribute->values[i]) { continue; }
 | 
			
		||||
                ++results[instance->values.back()];
 | 
			
		||||
                resultsTotal++;
 | 
			
		||||
            }
 | 
			
		||||
            debug::Log(kTrace, "Results:");
 | 
			
		||||
            for (auto it : results) { debug::Log(kTrace, "\t" + it.first + ": " + std::to_string(it.second)); }
 | 
			
		||||
            int lowest = 9999;
 | 
			
		||||
            float lowest;
 | 
			
		||||
            float lowestRate = 1.0f;
 | 
			
		||||
            std::string bestResult = results.begin()->first;
 | 
			
		||||
            for (auto it = results.begin(); it != results.end(); ++it) {
 | 
			
		||||
                if (it->second < lowest) {
 | 
			
		||||
                    lowest = it->second;
 | 
			
		||||
                } else {
 | 
			
		||||
                if (((resultsTotal - it->second) / float(resultsTotal)) < lowestRate) {
 | 
			
		||||
                    lowestRate = ((resultsTotal - it->second) / float(resultsTotal));
 | 
			
		||||
                    lowest = resultsTotal - it->second;
 | 
			
		||||
                    bestResult = it->first;
 | 
			
		||||
                } 
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user