import java.io.File; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class javaAccuracyCalculator{ //Read in log.txt, grab first item in array of each line //Counter for everytime have readline //Calculate accuracy rate public static void main(String[] args) { try { if (args.length != 3) { System.out.println("Usage: imageClassifier "); } else { String inputFilename = args[0]; String classifierType = args[1]; String outputFilename = args[2]; FileReader fileReader = new FileReader(inputFilename); BufferedReader buf = new BufferedReader(fileReader); FileWriter fw = new FileWriter(outputFilename,true); String line = null; String[] item; float trueAccuracyRate =0; float falseAccuracyRate =0; int trueCount = 0; int falseCount = 0; int sheetMusicCount = 0; int notSheetMusicCount = 0; //Splits into each record, since readLine splits by "\n" while ((line = buf.readLine()) != null) { item = line.split("\t"); //Calculate AccuracyRates if(item[1].contains("TestImages/SheetMusic/")){ sheetMusicCount++; if(item[3].equals("true")){ trueCount++; } } if(item[1].contains("TestImages/NotSheetMusic/")){ notSheetMusicCount++; if(item[3].equals("true")){ falseCount++; } } } //Amount of sheetMusic classified images / total amount of images read trueAccuracyRate = ((float)trueCount/(float)sheetMusicCount)*(float)100; //Amount of notSheetMusic classified images / total amount of images read falseAccuracyRate = ((float)falseCount/(float)notSheetMusicCount)*(float)100; fw.write("Classifier: " + classifierType + '\t' + "SheetMusicAccuracyRate: " + trueAccuracyRate + "%" + '\t' + "NotSheetMusicAccuracyRate :" + falseAccuracyRate + "%" + "\n"); buf.close(); fw.close(); } } catch(Exception e){ System.err.println(e); } } }