public void testClassification() throws Exception { File rawFile = TEMP_DIR.createFile("simple.csv"); File egaFile = TEMP_DIR.createFile("simple.ega"); File outputFile = TEMP_DIR.createFile("simple_output.csv"); FileUtil.copyResource("org/encog/data/simple.csv", rawFile); FileUtil.copyResource("org/encog/data/simple-r.ega", egaFile); EncogAnalyst analyst = new EncogAnalyst(); analyst.addAnalystListener(new ConsoleAnalystListener()); analyst.load(egaFile); analyst.executeTask("task-full"); ReadCSV csv = new ReadCSV(outputFile.toString(), true, CSVFormat.ENGLISH); while (csv.next()) { double diff = Math.abs(csv.getDouble(2) - csv.getDouble(4)); Assert.assertTrue(diff < 1.5); } Assert.assertEquals(4, analyst.getScript().getFields().length); Assert.assertEquals(3, analyst.getScript().getFields()[3].getClassMembers().size()); csv.close(); }
/** * Load a CSV file into a memory dataset. * * @param format The CSV format to use. * @param filename The filename to load. * @param headers True if there is a header line. * @param inputSize The input size. Input always comes first in a file. * @param idealSize The ideal size, 0 for unsupervised. * @return A NeuralDataSet that holds the contents of the CSV file. */ public static MLDataSet loadCSVTOMemory( CSVFormat format, String filename, boolean headers, int inputSize, int idealSize) { MLDataSet result = new BasicMLDataSet(); ReadCSV csv = new ReadCSV(filename, headers, format); while (csv.next()) { MLData input = null; MLData ideal = null; int index = 0; input = new BasicMLData(inputSize); for (int i = 0; i < inputSize; i++) { double d = csv.getDouble(index++); input.setData(i, d); } if (idealSize > 0) { ideal = new BasicMLData(idealSize); for (int i = 0; i < idealSize; i++) { double d = csv.getDouble(index++); ideal.setData(i, d); } } MLDataPair pair = new BasicMLDataPair(input, ideal); result.add(pair); } return result; }
public static void convertCSV2Binary( File csvFile, CSVFormat format, File binFile, int[] input, int[] ideal, boolean headers) { binFile.delete(); ReadCSV csv = new ReadCSV(csvFile.toString(), headers, format); BufferedMLDataSet buffer = new BufferedMLDataSet(binFile); buffer.beginLoad(input.length, ideal.length); while (csv.next()) { BasicMLData inputData = new BasicMLData(input.length); BasicMLData idealData = new BasicMLData(ideal.length); // handle input data for (int i = 0; i < input.length; i++) { inputData.setData(i, csv.getDouble(input[i])); } // handle input data for (int i = 0; i < ideal.length; i++) { idealData.setData(i, csv.getDouble(ideal[i])); } // add to dataset buffer.add(inputData, idealData); } buffer.endLoad(); }