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

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

final01. Need Map results still

File size: 4.7 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 String notApplicable = "N/A";
31 //
32 int sheetMusicCount = 0;
33 int notSheetMusicCount = 0;
34 //
35 int truePositive = 0;
36 int trueNegative = 0;
37 //
38 int falsePositive = 0;
39 int falseNegative = 0;
40
41 //Splits into each record, since readLine splits by "\n"
42 while ((line = buf.readLine()) != null) {
43 item = line.split("\t");
44 //Calculate AccuracyRates
45 if(item[1].contains("/SheetMusic/")){
46 sheetMusicCount++;
47 if(item[3].equals("true")){
48 truePositive++;
49 }
50 else if(item[3].equals("false") || item[3].equals("null")){
51 falseNegative++;
52 }
53 else {
54 System.err.println("Error log file");
55 }
56 }
57 if(item[1].contains("/NotSheetMusic/")){
58 notSheetMusicCount++;
59 if(item[3].equals("true")){
60 falsePositive++;
61 }
62 else if(item[3].equals("false")|| item[3].equals("null")){
63 trueNegative++;
64 }
65 else{
66 System.err.println("Error log file");
67 }
68 }
69 }
70
71
72 //Correctly identified SheetMusic as SheetMusic
73
74 //TruthAccuracyRate
75 if(sheetMusicCount != 0){
76 trueAccuracyRate = ((float)truePositive/(float)sheetMusicCount)*(float)100;
77 }
78 else {
79 trueAccuracyRate = 0;
80 }
81
82 //FalseAccuracyRate
83 if(notSheetMusicCount != 0){
84 //Amount of Correctly identified NotSheetSheetMusic as NotSheetMusic
85 falseAccuracyRate = ((float)trueNegative/(float)notSheetMusicCount)*(float)100;
86 }
87 else {
88 falseAccuracyRate = 0;
89 }
90
91 //Overall accuaracy
92 if(notSheetMusicCount != 0 && sheetMusicCount != 0) {
93 overallAccuracyRate = (truePositive + trueNegative)/(float)(sheetMusicCount+notSheetMusicCount)*(float)100;
94 }
95 else if (sheetMusicCount == 0) {
96 trueAccuracyRate = -1;
97 overallAccuracyRate = falseAccuracyRate;
98 }
99 else if(notSheetMusicCount == 0) {
100 falseAccuracyRate = -1;
101 overallAccuracyRate = trueAccuracyRate;
102 }
103 else {
104 overallAccuracyRate = -1;
105 System.out.println("There is nothing to compare");
106 }
107 if(falseAccuracyRate ==-1){
108 fw.write("Date: " + d.toString() + '\n'
109 + "Classifier: " + classifierType + '\n'
110 + "truePositive: " + truePositive + '\n'
111 + "falseNegative: " + falseNegative + '\n'
112 + "falsePositve: " + falsePositive + '\n'
113 + "trueNegative: " + trueNegative + '\n'
114 + "SheetMusicAccuracyRate: " + trueAccuracyRate + "%" + '\n'
115 + "NotSheetMusicAccuracyRate: " + notApplicable + '\n'
116 + "OverallAccuracyRate: " + overallAccuracyRate + "%" + '\n');
117 }
118 else if(trueAccuracyRate == -1){
119 fw.write("Date: " + d.toString() + '\n'
120 + "Classifier: " + classifierType + '\n'
121 + "truePositive: " + truePositive + '\n'
122 + "falseNegative: " + falseNegative + '\n'
123 + "falsePositve: " + falsePositive + '\n'
124 + "trueNegative: " + trueNegative + '\n'
125 + "SheetMusicAccuracyRate: " + notApplicable + '\n'
126 + "NotSheetMusicAccuracyRate: " + falseAccuracyRate + "%" + '\n'
127 + "OverallAccuracyRate: " + overallAccuracyRate + "%" + '\n');
128 }
129 else{
130 fw.write("Date: " + d.toString() + '\n'
131 + "Classifier: " + classifierType + '\n'
132 + "truePositive: " + truePositive + '\n'
133 + "falseNegative: " + falseNegative + '\n'
134 + "falsePositve: " + falsePositive + '\n'
135 + "trueNegative: " + trueNegative + '\n'
136 + "SheetMusicAccuracyRate: " + trueAccuracyRate + "%" + '\n'
137 + "NotSheetMusicAccuracyRate: " + falseAccuracyRate + "%" + '\n'
138 + "OverallAccuracyRate: " + overallAccuracyRate + "%" + '\n');
139 }
140 buf.close();
141 fw.close();
142 }
143 }
144 catch(Exception e){
145 System.err.println(e);
146 }
147 }
148
149}
Note: See TracBrowser for help on using the repository browser.