-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFileHandler.java
98 lines (82 loc) · 3.32 KB
/
FileHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
File: FileHandler.java
Authors: Kenny Collins, Anthony Rojas, Scott Schnieders, Rakan Al rasheed
Date: 3/2/2024
Description: This file is responsible for reading train/test files, writing results, and loading weights from file.
*/
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class FileHandler {
String trainPath = "train/";
String testPath = "test/";
String weightPath = "weights/";
String resultPath = "results/";
// read input data from file, can be used for training or testing
public InputData readInputData(String filePath, String directory) throws FileNotFoundException {
File trainData = new File(directory + filePath);
Scanner kb = new Scanner(trainData);
int numDimensions = kb.nextInt();
int outputSize = kb.nextInt();
int numPairs = kb.nextInt();
ArrayList<String> charList = new ArrayList<>();
ArrayList<ArrayList<Integer>> trainingSet = new ArrayList<>();
ArrayList<ArrayList<Integer>> targetSet = new ArrayList<>();
// looping through data pairs
for (int i = 0; i < numPairs; i++) {
ArrayList<Integer> target = new ArrayList<>();
ArrayList<Integer> training = new ArrayList<>();
// training data
for (int j = 0; j < numDimensions; j++) {
int value = kb.nextInt();
training.add(value);
}
trainingSet.add(training);
// target data
for (int j = 0; j < outputSize; j++) {
int value = kb.nextInt();
target.add(value);
}
targetSet.add(target);
// read characters for debugging
String character = kb.next();
charList.add(character);
}
kb.close();
// returning multiple values
return new InputData(numDimensions, outputSize, numPairs, charList, trainingSet, targetSet);
}
// Save and append to csv file for analysis
public void addResultsToCSV(String otherInfo, String TestFile, String ResultsFile, double Accuracy) throws IOException {
StringBuilder sb = new StringBuilder();
sb.append(otherInfo);
sb.append(TestFile).append(",");
sb.append(ResultsFile).append(",");
sb.append(Accuracy).append("\n");
FileWriter pw = new FileWriter(resultPath + "results.csv", true);
pw.write(sb.toString());
pw.close();
}
// Class to hold the data read from the input file
static class InputData {
int numDimensions;
int outputSize;
int numPairs;
ArrayList<String> charList;
ArrayList<ArrayList<Integer>> trainingSet;
ArrayList<ArrayList<Integer>> targetSet;
public InputData(int numDimensions, int outputSize, int numPairs,
ArrayList<String> charList, ArrayList<ArrayList<Integer>> trainingSet,
ArrayList<ArrayList<Integer>> targetSet) {
this.numDimensions = numDimensions;
this.outputSize = outputSize;
this.numPairs = numPairs;
this.charList = charList;
this.trainingSet = trainingSet;
this.targetSet = targetSet;
}
}
}