/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package AaronTest; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import weka.core.Instances; import weka.core.converters.ArffSaver; import weka.core.shapelet.QualityMeasures; /** * * @author raj09hxu */ public class LocalInfo { public static final String[] ucrTiny ={"ItalyPowerDemand", "SonyAIBORobotSurface"}; public static final String saveLocation = "";//C:/LocalData/Dropbox/PhD/Data/"; /** * * @param dataName * @param transform * @param qm * @return * returns the save location, depending on the dataName, transform and quality measure. ADD TEST or TRAIN for each. * this ensures, if used, that we have consistent file naming for saving and loading. * EG. LocalArea\Dataset\ClassifierName_QualityMeasure */ public static String getSaveLocation(String dataName, Class transform, QualityMeasures.ShapeletQualityChoice qm) { return saveLocation + dataName + File.separator + transform.getSimpleName() + "_" + qm; } /** * * @param fileName * @return */ public static Instances[] loadTestAndTrain(String fileName) { Instances[] dataSet = new Instances[2]; dataSet[0] = utilities.ClassifierTools.loadData(fileName + "_TRAIN"); dataSet[0].setClassIndex(dataSet[0].numAttributes()-1); dataSet[1] = utilities.ClassifierTools.loadData(fileName + "_TEST"); dataSet[1].setClassIndex(dataSet[1].numAttributes()-1); return dataSet; } public static void LoadData(String dataName, Instances[][][] dataSets, Class[] classList, QualityMeasures.ShapeletQualityChoice[] qualityMeasures) { //either extract them, or load them from the save file. for (int i = 0; i < classList.length; i++) { for (int k = 0; k < qualityMeasures.length; k++) { //get the train and test instances for each dataset from the localInfo. String fileName = getSaveLocation(dataName, classList[i], qualityMeasures[k]); dataSets[i][k] = loadTestAndTrain(fileName); } } } /** * * @param dataSet * @param fileName */ public static void saveDataset(Instances dataSet, String fileName) { try { ArffSaver saver = new ArffSaver(); saver.setInstances(dataSet); saver.setFile(new File(fileName + ".arff")); saver.writeBatch(); } catch (IOException ex) { System.out.println("Error saving transformed dataset" + ex); } } //this will generate your filePath for you. Based on your dataName/Transform/QualityMeasure. public static void saveDataset(Instances dataSet, String dataName, Class transform, QualityMeasures.ShapeletQualityChoice qm) { saveDataset(dataSet, getSaveLocation(dataName, transform, qm)); } public static void saveHashMap(HashMap map, String dataName) { FileWriter out = null; try { File file = new File(saveLocation+dataName+File.separator+ dataName+"_results.csv"); file.getParentFile().mkdirs(); out = new FileWriter(file); out.append("Classifier_QualityMeasure,Accuracy,\n"); for (Iterator it = map.keySet().iterator(); it.hasNext();) { Object key = it.next(); out.append(key +"," + map.get(key)+",\n"); } out.append("\n"); out.close(); } catch (IOException ex) { System.out.println("Saving Failed"); } } }