package edu.hawaii.jmotif.performance.insect; import java.io.BufferedWriter; import java.io.FileWriter; import java.util.List; import java.util.Map; import java.util.Map.Entry; import edu.hawaii.jmotif.performance.UCRGenericClassifier; import edu.hawaii.jmotif.performance.UCRUtils; import edu.hawaii.jmotif.text.SAXCollectionStrategy; /** * Helper-runner for CBF test. * * @author psenin * */ public class UCRInsectThreaded extends UCRGenericClassifier { // data // // private static final String TRAINING_DATA = "/media/Stock/sounds/try50.txt"; // output prefix // private static final String outputPrefix = "insect_threaded_"; // SAX parameters to use // // private static final int WINDOW_MIN = 15; // private static final int WINDOW_MAX = 300; // private static final int WINDOW_INCREMENT = 3; // // private static final int PAA_MIN = 5; // private static final int PAA_MAX = 50; // private static final int PAA_INCREMENT = 3; // // private static final int ALPHABET_MIN = 3; // private static final int ALPHABET_MAX = 15; // private static final int ALPHABET_INCREMENT = 2; // leave out parameters // // private static final int LEAVE_OUT_NUM = 10; // private static final int THREADS_NUM = 8; private UCRInsectThreaded() { super(); } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { System.out.println("= Configuration =============================="); String datFileName = args[0]; String holdoutNum = args[1]; String threadsNum = args[2]; System.out.println("Data: " + datFileName + ", holdout: " + holdoutNum + ", threads: " + threadsNum); String wStart = args[3]; String wEnd = args[4]; String wIncrement = args[5]; System.out.println("Window: start " + wStart + ", end " + wEnd + ", increment " + wIncrement); String pStart = args[6]; String pEnd = args[7]; String pIncrement = args[8]; System.out.println("PAA: start " + pStart + ", end " + pEnd + ", increment " + pIncrement); String aStart = args[9]; String aEnd = args[10]; String aIncrement = args[11]; System.out.println("Alphabet: start " + aStart + ", end " + aEnd + ", increment " + aIncrement); String strategyP = args[12]; System.out.println("Strategy: " + strategyP); System.out.println("= End configuration =============================="); // configuring strategy // SAXCollectionStrategy strategy = SAXCollectionStrategy.NOREDUCTION; String strategyPrefix = "noreduction"; if (args.length > 0) { if ("EXACT".equalsIgnoreCase(strategyP)) { strategy = SAXCollectionStrategy.EXACT; strategyPrefix = "exact"; } if ("CLASSIC".equalsIgnoreCase(strategyP)) { strategy = SAXCollectionStrategy.CLASSIC; strategyPrefix = "classic"; } } consoleLogger.fine("strategy: " + strategyPrefix + ", leaving out: " + Integer.valueOf(holdoutNum)); // make up window sizes int[] window_sizes = makeArray(Integer.valueOf(wStart), Integer.valueOf(wEnd), Integer.valueOf(wIncrement)); // make up paa sizes int[] paa_sizes = makeArray(Integer.valueOf(pStart), Integer.valueOf(pEnd), Integer.valueOf(pIncrement)); // make up alphabet sizes int[] alphabet_sizes = makeArray(Integer.valueOf(aStart), Integer.valueOf(aEnd), Integer.valueOf(aIncrement)); // reading training and test collections // Map<String, List<double[]>> trainData = UCRUtils.readUCRData(datFileName); consoleLogger.fine("trainData classes: " + trainData.size() + ", series length: " + trainData.entrySet().iterator().next().getValue().get(0).length); for (Entry<String, List<double[]>> e : trainData.entrySet()) { consoleLogger.fine(" training class: " + e.getKey() + " series: " + e.getValue().size()); } List<String> result = trainKNNFoldJMotifThreaded(Integer.valueOf(threadsNum), window_sizes, paa_sizes, alphabet_sizes, strategy, trainData, Integer.valueOf(holdoutNum)); BufferedWriter bw = new BufferedWriter(new FileWriter(outputPrefix + "_" + strategyPrefix + "_" + Integer.valueOf(holdoutNum) + ".csv")); for (String line : result) { bw.write(line + CR); } bw.close(); } }