/*
* 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 development.TimeSeriesClassification;
import weka.classifiers.lazy.IBk;
import weka.classifiers.meta.Bagging;
import weka.core.Instances;
import weka.core.shapelet.QualityMeasures;
import weka.filters.timeseries.shapelet_transforms.FullShapeletTransform;
import weka.filters.timeseries.shapelet_transforms.ShapeletTransform;
import weka.filters.timeseries.shapelet_transforms.ShapeletTransformDistCaching;
/**
*
* @author raj09hxu
*/
public class TransformEnsembleExperiments {
public static void main(String[] args) {
//for each dataset. Run the test harness.
for (String ucrTiny : LocalInfo.ucrTiny)
{
EnsembleTestHarness(ucrTiny);
}
}
public static void EnsembleTestHarness(String dataName)
{
//names of the transforms available
Class[] classList =
{
FullShapeletTransform.class, ShapeletTransform.class, ShapeletTransformDistCaching.class
};
//qualityMeasures available.
QualityMeasures.ShapeletQualityChoice[] qualityMeasures =
{
QualityMeasures.ShapeletQualityChoice.F_STAT, QualityMeasures.ShapeletQualityChoice.INFORMATION_GAIN
};
//[transformType][qualityMeasure][TRAIN/TEST]
Instances[][][] dataSets = new Instances[classList.length][qualityMeasures.length][2];
LocalInfo.LoadData(dataName, dataSets, classList, qualityMeasures);
for (int i = 0; i < classList.length; i++)
{
for (int j = 0; j < qualityMeasures.length; j++)
{
ensembleTest(dataSets[i][j][0], dataSets[i][j][1]);
}
}
}
public static void ensembleTest(Instances train, Instances test)
{
//create a bagging ensemble and give it 1-NN as a base.
Bagging bag = new Bagging();
bag.setClassifier(new IBk(1));
//train our bag
try
{
bag.buildClassifier(train);
}
catch (Exception ex)
{
System.out.println("Ex: " + ex);
}
double average = utilities.ClassifierTools.accuracy(test, bag);
System.out.println("Average correct = " + average);
}
}