source: other-projects/is-sheet-music-encore/trunk/image-identification-terminal/javaAccuracyCalculator.java@ 33170

Last change on this file since 33170 was 33170, checked in by cpb16, 5 years ago

refined houghlineP alogirthm

File size: 2.9 KB
Line 
1import java.io.File;
2import java.io.BufferedReader;
3import java.io.BufferedWriter;
4import java.io.FileReader;
5import java.io.FileWriter;
6import java.util.*;
7public class javaAccuracyCalculator{
8
9 //Read in log.txt, grab first item in array of each line
10 //Counter for everytime have readline
11 //Calculate accuracy rate
12 public static void main(String[] args) {
13 try {
14 if (args.length != 3) {
15 System.out.println("Usage: imageClassifier <inputFilename> <classifierType> <outputFilename>");
16 }
17 else {
18 Date d = new Date();
19 String inputFilename = args[0];
20 String classifierType = args[1];
21 String outputFilename = args[2];
22 FileReader fileReader = new FileReader(inputFilename);
23 BufferedReader buf = new BufferedReader(fileReader);
24 FileWriter fw = new FileWriter(outputFilename,true);
25 String line = null;
26 String[] item;
27 float trueAccuracyRate =0;
28 float falseAccuracyRate =0;
29 float overallAccuracyRate=0;
30 //
31 int sheetMusicCount = 0;
32 int notSheetMusicCount = 0;
33 //
34 int truePositive = 0;
35 int trueNegative = 0;
36 //
37 int falsePositive = 0;
38 int falseNegative = 0;
39
40 //Splits into each record, since readLine splits by "\n"
41 while ((line = buf.readLine()) != null) {
42 item = line.split("\t");
43 //Calculate AccuracyRates
44 if(item[1].contains("/SheetMusic/")){
45 sheetMusicCount++;
46 if(item[3].equals("true")){
47 truePositive++;
48 }
49 else if(item[3].equals("false")){
50 falseNegative++;
51 }
52 else {
53 System.err.println("Error log file");
54 }
55 }
56 if(item[1].contains("/NotSheetMusic/")){
57 notSheetMusicCount++;
58 if(item[3].equals("true")){
59 falsePositive++;
60 }
61 else if(item[3].equals("false")){
62 trueNegative++;
63 }
64 else{
65 System.err.println("Error log file");
66 }
67 }
68 }
69
70
71 //Correctly identified SheetMusic as SheetMusic
72 trueAccuracyRate = ((float)truePositive/(float)sheetMusicCount)*(float)100;
73
74 //Amount of Correctly identified NotSheetSheetMusic as NotSheetMusic
75 falseAccuracyRate = ((float)trueNegative/(float)notSheetMusicCount)*(float)100;
76
77 overallAccuracyRate = (truePositive + trueNegative)/(float)(sheetMusicCount+notSheetMusicCount)*(float)100;
78
79 fw.write("Date: " + d.toString() + '\n'
80 + "Classifier: " + classifierType + '\n'
81 + "truePositive: " + truePositive + '\n'
82 + "falseNegative: " + falseNegative + '\n'
83 + "falsePositve: " + falsePositive + '\n'
84 + "trueNegative: " + trueNegative + '\n'
85 + "SheetMusicAccuracyRate: " + trueAccuracyRate + "%" + '\n'
86 + "NotSheetMusicAccuracyRate: " + falseAccuracyRate + "%" + '\n'
87 + "OverallAccuracyRate: " + overallAccuracyRate + "%" + '\n' + '\n');
88 buf.close();
89 fw.close();
90 }
91 }
92 catch(Exception e){
93 System.err.println(e);
94 }
95 }
96
97}
Note: See TracBrowser for help on using the repository browser.