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

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

Backup for computer crash, only lost 5 lines of code in development section. They have been rewritten.

File size: 3.3 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 if(sheetMusicCount != 0){
73 trueAccuracyRate = ((float)truePositive/(float)sheetMusicCount)*(float)100;
74 }
75 else {
76 trueAccuracyRate = 0;
77 }
78
79 if(notSheetMusicCount != 0){
80 //Amount of Correctly identified NotSheetSheetMusic as NotSheetMusic
81 falseAccuracyRate = ((float)trueNegative/(float)notSheetMusicCount)*(float)100;
82 }
83 else {
84 falseAccuracyRate = 0;
85 }
86
87 if(notSheetMusicCount != 0 && sheetMusicCount != 0) {
88 overallAccuracyRate = (truePositive + trueNegative)/(float)(sheetMusicCount+notSheetMusicCount)*(float)100;
89 }
90 else if (sheetMusicCount = 0) {
91 overallAccuracyRate = falseAccuracyRate/2;
92 }
93 else {
94 overallAccuracyRate = trueAccuracyRate/2;
95 }
96
97 fw.write("Date: " + d.toString() + '\n'
98 + "Classifier: " + classifierType + '\n'
99 + "truePositive: " + truePositive + '\n'
100 + "falseNegative: " + falseNegative + '\n'
101 + "falsePositve: " + falsePositive + '\n'
102 + "trueNegative: " + trueNegative + '\n'
103 + "SheetMusicAccuracyRate: " + trueAccuracyRate + "%" + '\n'
104 + "NotSheetMusicAccuracyRate: " + falseAccuracyRate + "%" + '\n'
105 + "OverallAccuracyRate: " + overallAccuracyRate + "%" + '\n' + '\n');
106 buf.close();
107 fw.close();
108 }
109 }
110 catch(Exception e){
111 System.err.println(e);
112 }
113 }
114
115}
Note: See TracBrowser for help on using the repository browser.