Java tutorial
/* * 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 applications; import utilities.ClassifierTools; import utilities.ThreadedClassifierExperiment; import weka.classifiers.Classifier; import weka.classifiers.functions.SMO; import weka.classifiers.functions.supportVector.PolyKernel; import weka.classifiers.lazy.DTW_kNN; import weka.classifiers.lazy.IBk; import weka.classifiers.lazy.kNN; import weka.core.Instances; import weka.core.shapelet.QualityMeasures; import weka.filters.NormalizeCase; import weka.filters.timeseries.shapelet_transforms.FullShapeletTransform; import weka.filters.timeseries.shapelet_transforms.ShapeletTransformDistCaching; /** * * @author ajb */ public class FoodSpectrograms { public static Instances[] train, test; public static Instances strawberryTrain, strawberryTest; public static Instances wineTrain, wineTest; public static Instances hamTrain, hamTest; public static String path = "C:\\Users\\ajb\\Dropbox\\TSC Problems\\"; public static String[] names = { "Meat", "Wine", "Ham", "Strawberry" }; public static void loadData() { train = new Instances[4]; test = new Instances[4]; train[0] = ClassifierTools.loadData(path + "Meat\\Meat_TRAIN"); test[0] = ClassifierTools.loadData(path + "Meat\\Meat_TEST"); train[1] = ClassifierTools.loadData(path + "Wine\\Wine_TRAIN"); test[1] = ClassifierTools.loadData(path + "Wine\\Wine_TEST"); train[2] = ClassifierTools.loadData(path + "Ham\\Ham_TRAIN"); test[2] = ClassifierTools.loadData(path + "Ham\\Ham_TEST"); train[3] = ClassifierTools.loadData(path + "Strawberry\\Strawberry_TRAIN"); test[3] = ClassifierTools.loadData(path + "Strawberry\\Strawberry_TEST"); NormalizeCase nc = new NormalizeCase(); for (int i = 0; i < test.length; i++) { try { train[i] = nc.process(train[i]); test[i] = nc.process(test[i]); } catch (Exception e) { System.out.println(" Errereere"); System.exit(0); } } } public static void shapeletClassifier() { int nosExp = 3; ThreadedClassifierExperiment[] runs = new ThreadedClassifierExperiment[nosExp]; Thread[] threads = new Thread[nosExp]; for (int i = 0; i < nosExp; i++) { Classifier c = new SMO(); PolyKernel kernel = new PolyKernel(); kernel.setExponent(1); ((SMO) c).setKernel(kernel); FullShapeletTransform s = new FullShapeletTransform(); s.setDebug(false); s.setNumberOfShapelets(train[i].numAttributes() / 2); int minLength = 5; int maxLength = train[i].numAttributes() / 4; // int maxLength=(train.numAttributes()-1)/10; s.setShapeletMinAndMax(minLength, maxLength); s.setQualityMeasure(QualityMeasures.ShapeletQualityChoice.F_STAT); s.turnOffLog(); runs[i] = new ThreadedClassifierExperiment(train[i], test[i], c); runs[i].setTransform(s); threads[i] = new Thread(runs[i]); } for (int i = 0; i < nosExp; i++) threads[i].start(); try { for (int i = 0; i < nosExp; i++) threads[i].join(); } catch (InterruptedException e) { System.out.println(" Interrupted!!"); } for (int i = 0; i < nosExp; i++) System.out.println(" ED Accuracy for " + names[i] + " is " + runs[i].getTestAccuracy()); } public static void baselineClassifier() { int nosExp = 4; ThreadedClassifierExperiment[] runs = new ThreadedClassifierExperiment[nosExp]; Thread[] threads = new Thread[nosExp]; for (int i = 0; i < nosExp; i++) { DTW_kNN c = new DTW_kNN(); c.setMaxR(1); c.optimiseWindow(true); runs[i] = new ThreadedClassifierExperiment(train[i], test[i], c); threads[i] = new Thread(runs[i]); } for (int i = 0; i < nosExp; i++) threads[i].start(); try { for (int i = 0; i < nosExp; i++) threads[i].join(); } catch (InterruptedException e) { System.out.println(" Interrupted!!"); } for (int i = 0; i < nosExp; i++) System.out.println(" DTWCV Accuracy for " + names[i] + " is " + runs[i].getTestAccuracy()); } public static void main(String[] args) { loadData(); // baselineClassifier(); shapeletClassifier(); } }