/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package applications;
import examples.TransformExamples;
import fileIO.OutFile;
import java.util.ArrayList;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import utilities.ClassifierTools;
import weka.classifiers.functions.SMO;
import weka.classifiers.functions.supportVector.PolyKernel;
import weka.classifiers.lazy.IBk;
import weka.classifiers.meta.RotationForest;
import weka.classifiers.trees.J48;
import weka.classifiers.trees.RandomForest;
import weka.core.Instances;
import weka.core.Instance;
import weka.filters.*;
/**
*
* @author RooTsMan v4.0 n.a.i
*/
public class ElectricityProfileClassification {
//static String loaddummypath = "C:\\Users\\RooTsMan v4.0 n.a.i\\Documents\\UEA\\Year 4\\MCOMP project\\experiments\\ElectricDevices\\";
//static String loadcountypath = "C:\\Users\\RooTsMan v4.0 n.a.i\\Documents\\UEA\\Year 4\\MCOMP project\\experiments\\DataForPauwe\\DataForPauwe\\county\\";
static String loadpath = "C:\\Users\\RooTsMan v4.0 n.a.i\\Documents\\UEA\\Year 4\\MCOMP project\\experiments\\DataForPauwe\\DataForPauwe\\";
static String storepath = "C:\\Users\\RooTsMan v4.0 n.a.i\\Documents\\UEA\\Year 4\\MCOMP project\\experiments\\results\\";
static String county = "county";
static String householdIncome = "householdIncome";
static String propertyType = "propertyType";
static String yearBuilt = "yearBuilt";
//static String county = "county\\";
//static String householdIncome = "householdIncome\\";
//static String propertyType = "propertyType\\";
//static String yearBuilt = "yearBuilt\\";
public static String[] CountyFiles = {
"county_DUABAAAL",
"county_DUABAAAY",
"county_DUABAABH",
"county_DUABAABK",
"county_DUABAABO",
"county_DUABAABR",
"county_DUABAABV",
"county_DUABAABW",
"county_DUABAABY",
"county_DUABAACA",
"county_DUABAACH",
"county_duabaaci",
"county_DUABAACK",
"county_DUABAACS",
"county_DUABAACX",
"county_DUACAAAE",
"county_duacaaaq",
"county_duacaaas",
"county_duacaahc",
"county_SOACAABI",
"county_SOACAABL",
"county_SOACAABM",
"county_SOACAACL",
"county_SOACAAEF",
"county_SOACAAEL",
"county_soacaafi",
"county_SOACAAGH",
"county_SOACAAGI",
"county_SOADAAAY",
"county_SOADAABB",
"county_SOADAABF",
"county_SOADAABI",
"county_soadaabr",
"county_SOADAALV",
"county_TRI-PPB-PETTY",
"county_TRI-VET-AAAAA",
"county_TRI-VET-AAAAB",
"county_TRI-VET-AAAAC",
"county_TRI-VET-AAAAD",
"county_TRI-VET-AAAAE",
"county_TRI-VET-AAAAG",
"county_TRI-VET-AAAAJ",
"county_TRI-VET-AAAAK",
"county_TRI-VET-AAAAL",
"county_TRI-VET-AAAAN",
"county_TRI-VET-AAAAO",
"county_TRI-VET-AAAAP",
"county_TRI-VET-AAAAR",
"county_TRI-VET-AAAAS",
"county_TRI-VET-AAAAU",
"county_TRI-VET-AAAAX",
"county_TRI-VET-AAAAZ",
"county_TRI-VET-AAABC",
"county_TRI-VET-AAABD",
"County_TRI-VET-AAABF",
"county_TRI-VET-AAABH",
"county_TRI-VET-AAABJ",
"county_TRI-VET-AAABK",
"county_TRI-VET-AAABM",
"county_TRI-VET-AAABN",
"county_TRI-VET-AAABT",
"county_TRI-VET-AAABU",
"county_TRI-VET-AAABW",
"county_TRI-VET-AAABX",
"county_TRI-VET-AAABY",
"county_TRI-VET-AAACC",
"county_TRI-VET-AAACF",
"county_TRI-VET-AAACH",
"county_TRI-VET-AAACW",
"county_TRI-VET-AAACX",
"county_TRI-VET-AAACZ",
"county_TRI-VET-AAADB",
"county_TRI-VET-AAADH",
"county_TRI-VET-AAADJ",
"county_TRI-VET-AAADK",
"county_TRI-VET-AAADN",
"county_TRI-VET-AAADR",
"county_TRI-VET-AAADV",
"county_TRI-VET-AAADY",
"county_TRI-VET-AAADZ",
"county_TRI-VET-AAAEA",
"county_TRI-VET-AAAEP",
"county_TRI-VET-AAAER",
"county_TRI-VET-AAAET",
"county_TRI-VET-AAAEW",
"county_TRI-VET-AAAEZ",
"county_TRI-VET-AAAFD",
"county_TRI-VET-AAAFF",
"county_TRI-VET-AAAFJ",
"county_TRI-VET-AAAFK",
"county_TRI-VET-AAAFL",
"county_TRI-VET-AAAFR",
"county_TRI-VET-AAAFS",
"county_TRI-VET-AAAFW",
"county_TRI-VET-AAAGA"
};
public static String[] HouseIncomeFiles = {
"householdIncome_duabaaai",
"householdIncome_DUABAAAL",
"householdIncome_DUABAAAY",
"householdIncome_DUABAABD",
"householdIncome_DUABAABH",
"householdIncome_DUABAABK",
"householdIncome_DUABAABO",
"householdIncome_DUABAABR",
"householdIncome_duabaabs",
"householdIncome_DUABAABV",
"householdIncome_DUABAABW",
"householdIncome_DUABAABY",
"householdIncome_DUABAACA",
"householdIncome_DUABAACB",
"householdIncome_DUABAACD",
"householdIncome_DUABAACG",
"householdIncome_DUABAACH",
"householdIncome_duabaaci",
"householdIncome_DUABAACK",
"householdIncome_DUABAACS",
"householdIncome_DUABAACT",
"householdIncome_DUABAACX",
"householdIncome_DUACAAAA",
"householdIncome_duacaaab",
"householdIncome_DUACAAAC",
"householdIncome_DUACAAAD",
"householdIncome_DUACAAAE",
"householdIncome_DUACAAAG",
"householdIncome_DUACAAAK",
"householdIncome_duacaaaq",
"householdIncome_duacaaas",
"householdIncome_DUACAAGD",
"householdIncome_duacaahc",
"householdIncome_gmacaacf",
"householdIncome_soacaaai",
"householdIncome_SOACAABI",
"householdIncome_SOACAABL",
"householdIncome_SOACAABM",
"householdIncome_soacaabn",
"householdIncome_SOACAABQ",
"householdIncome_SOACAABR",
"householdIncome_SOACAABX",
"householdIncome_SOACAACA",
"householdIncome_SOACAACL",
"householdIncome_SOACAAEF",
"householdIncome_SOACAAEL",
"householdIncome_soacaafi",
"householdIncome_SOACAAGH",
"householdIncome_SOACAAGI",
"householdIncome_SOADAAAY",
"householdIncome_SOADAABA",
"householdIncome_SOADAABB",
"householdIncome_SOADAABF",
"householdIncome_SOADAABI",
"householdIncome_soadaabm",
"householdIncome_soadaabr",
"householdIncome_SOADAALV",
"householdIncome_TRI-PPB-PETTY",
"householdIncome_TRI-VET-AAAAA",
"householdIncome_TRI-VET-AAAAB",
"householdIncome_TRI-VET-AAAAC",
"householdIncome_TRI-VET-AAAAD",
"householdIncome_TRI-VET-AAAAE",
"householdIncome_TRI-VET-AAAAF",
"householdIncome_TRI-VET-AAAAG",
"householdIncome_TRI-VET-AAAAJ",
"householdIncome_TRI-VET-AAAAK",
"householdIncome_TRI-VET-AAAAL",
"householdIncome_TRI-VET-AAAAM",
"householdIncome_TRI-VET-AAAAN",
"householdIncome_TRI-VET-AAAAO",
"householdIncome_TRI-VET-AAAAP",
"householdIncome_TRI-VET-AAAAR",
"householdIncome_TRI-VET-AAAAS",
"householdIncome_TRI-VET-AAAAU",
"householdIncome_TRI-VET-AAAAW",
"householdIncome_TRI-VET-AAAAX",
"householdIncome_TRI-VET-AAAAZ",
"householdIncome_TRI-VET-AAABC",
"householdIncome_TRI-VET-AAABD",
"householdIncome_TRI-VET-AAABF",
"householdIncome_TRI-VET-AAABH",
"householdIncome_TRI-VET-AAABJ",
"householdIncome_TRI-VET-AAABK",
"householdIncome_TRI-VET-AAABL",
"householdIncome_TRI-VET-AAABM",
"householdIncome_TRI-VET-AAABN",
"householdIncome_TRI-VET-AAABP",
"householdIncome_TRI-VET-AAABT",
"householdIncome_TRI-VET-AAABU",
"householdIncome_TRI-VET-AAABW",
"householdIncome_TRI-VET-AAABX",
"householdIncome_TRI-VET-AAABY",
"householdIncome_TRI-VET-AAACC",
"householdIncome_TRI-VET-AAACE",
"householdIncome_TRI-VET-AAACF",
"householdIncome_TRI-VET-AAACH",
"householdIncome_TRI-VET-AAACJ",
"householdIncome_TRI-VET-AAACR",
"householdIncome_TRI-VET-AAACW",
"householdIncome_TRI-VET-AAACX",
"householdIncome_TRI-VET-AAACZ",
"householdIncome_TRI-VET-AAADB",
"householdIncome_TRI-VET-AAADE",
"householdIncome_TRI-VET-AAADH",
"householdIncome_TRI-VET-AAADJ",
"householdIncome_TRI-VET-AAADK",
"householdIncome_TRI-VET-AAADL",
"householdIncome_TRI-VET-AAADM",
"householdIncome_TRI-VET-AAADN",
"householdIncome_TRI-VET-AAADR",
"householdIncome_TRI-VET-AAADS",
"householdIncome_TRI-VET-AAADV",
"householdIncome_TRI-VET-AAADW",
"householdIncome_TRI-VET-AAADY",
"householdIncome_TRI-VET-AAADZ",
"householdIncome_TRI-VET-AAAEA",
"householdIncome_TRI-VET-AAAEE",
"householdIncome_TRI-VET-AAAEG",
"householdIncome_TRI-VET-AAAEH",
"householdIncome_TRI-VET-AAAEM",
"householdIncome_TRI-VET-AAAEP",
"householdIncome_TRI-VET-AAAER",
"householdIncome_TRI-VET-AAAET",
"householdIncome_TRI-VET-AAAEV",
"householdIncome_TRI-VET-AAAEW",
"householdIncome_TRI-VET-AAAEZ",
"householdIncome_TRI-VET-AAAFB",
"householdIncome_TRI-VET-AAAFC",
"householdIncome_TRI-VET-AAAFD",
"householdIncome_TRI-VET-AAAFF",
"householdIncome_TRI-VET-AAAFG",
"householdIncome_TRI-VET-AAAFJ",
"householdIncome_TRI-VET-AAAFK",
"householdIncome_TRI-VET-AAAFL",
"householdIncome_TRI-VET-AAAFR",
"householdIncome_TRI-VET-AAAFS",
"householdIncome_TRI-VET-AAAFT",
"householdIncome_TRI-VET-AAAFW",
"householdIncome_TRI-VET-AAAGA"
};
public static String[] PropertyFiles = {
"propertyType_duabaaai",
"propertyType_DUABAAAL",
"propertyType_DUABAAAY",
"propertyType_DUABAABD",
"propertyType_DUABAABH",
"propertyType_DUABAABK",
"propertyType_DUABAABO",
"propertyType_DUABAABR",
"propertyType_duabaabs",
"propertyType_DUABAABV",
"propertyType_DUABAABW",
"propertyType_DUABAABY",
"propertyType_DUABAACA",
"propertyType_DUABAACB",
"propertyType_DUABAACD",
"propertyType_DUABAACG",
"propertyType_DUABAACH",
"propertyType_duabaaci",
"propertyType_DUABAACS",
"propertyType_DUABAACT",
"propertyType_DUABAACX",
"propertyType_DUACAAAA",
"propertyType_DUACAAAD",
"propertyType_DUACAAAE",
"propertyType_DUACAAAG",
"propertyType_DUACAAAK",
"propertyType_duacaaaq",
"propertyType_duacaaas",
"propertyType_DUACAAGD",
"propertyType_duacaahc",
"propertyType_gmacaacf",
"propertyType_SOACAABL",
"propertyType_SOACAABM",
"propertyType_SOACAABQ",
"propertyType_SOACAABX",
"propertyType_SOACAACA",
"propertyType_SOACAACL",
"propertyType_SOACAAEF",
"propertyType_SOACAAEL",
"propertyType_soacaafi",
"propertyType_SOACAAGH",
"propertyType_SOACAAGI",
"propertyType_SOADAAAY",
"propertyType_SOADAABA",
"propertyType_SOADAABB",
"propertyType_SOADAABF",
"propertyType_SOADAABI",
"propertyType_soadaabm",
"propertyType_soadaabr",
"propertyType_SOADAALV",
"propertyType_TRI-VET-AAAAA",
"propertyType_TRI-VET-AAAAB",
"propertyType_TRI-VET-AAAAC",
"propertyType_TRI-VET-AAAAD",
"propertyType_TRI-VET-AAAAE",
"propertyType_TRI-VET-AAAAF",
"propertyType_TRI-VET-AAAAG",
"propertyType_TRI-VET-AAAAJ",
"propertyType_TRI-VET-AAAAK",
"propertyType_TRI-VET-AAAAL",
"propertyType_TRI-VET-AAAAM",
"propertyType_TRI-VET-AAAAO",
"propertyType_TRI-VET-AAAAP",
"propertyType_TRI-VET-AAAAR",
"propertyType_TRI-VET-AAAAU",
"propertyType_TRI-VET-AAAAW",
"propertyType_TRI-VET-AAAAX",
"propertyType_TRI-VET-AAAAZ",
"propertyType_TRI-VET-AAABC",
"propertyType_TRI-VET-AAABD",
"propertyType_TRI-VET-AAABF",
"propertyType_TRI-VET-AAABH",
"propertyType_TRI-VET-AAABJ",
"propertyType_TRI-VET-AAABK",
"propertyType_TRI-VET-AAABL",
"propertyType_TRI-VET-AAABM",
"propertyType_TRI-VET-AAABN",
"propertyType_TRI-VET-AAABP",
"propertyType_TRI-VET-AAABT",
"propertyType_TRI-VET-AAABU",
"propertyType_TRI-VET-AAABW",
"propertyType_TRI-VET-AAABX",
"propertyType_TRI-VET-AAABY",
"propertyType_TRI-VET-AAACC",
"propertyType_TRI-VET-AAACE",
"propertyType_TRI-VET-AAACF",
"propertyType_TRI-VET-AAACH",
"propertyType_TRI-VET-AAACJ",
"propertyType_TRI-VET-AAACR",
"propertyType_TRI-VET-AAACW",
"propertyType_TRI-VET-AAACX",
"propertyType_TRI-VET-AAACZ",
"propertyType_TRI-VET-AAADB",
"propertyType_TRI-VET-AAADE",
"propertyType_TRI-VET-AAADH",
"propertyType_TRI-VET-AAADJ",
"propertyType_TRI-VET-AAADK",
"propertyType_TRI-VET-AAADL",
"propertyType_TRI-VET-AAADM",
"propertyType_TRI-VET-AAADN",
"propertyType_TRI-VET-AAADR",
"propertyType_TRI-VET-AAADS",
"propertyType_TRI-VET-AAADV",
"propertyType_TRI-VET-AAADW",
"propertyType_TRI-VET-AAADY",
"propertyType_TRI-VET-AAADZ",
"propertyType_TRI-VET-AAAEA",
"propertyType_TRI-VET-AAAEE",
"propertyType_TRI-VET-AAAEG",
"propertyType_TRI-VET-AAAEH",
"propertyType_TRI-VET-AAAEM",
"propertyType_TRI-VET-AAAEP",
"propertyType_TRI-VET-AAAER",
"propertyType_TRI-VET-AAAET",
"propertyType_TRI-VET-AAAEV",
"propertyType_TRI-VET-AAAEW",
"propertyType_TRI-VET-AAAEZ",
"propertyType_TRI-VET-AAAFB",
"propertyType_TRI-VET-AAAFC",
"propertyType_TRI-VET-AAAFD",
"propertyType_TRI-VET-AAAFF",
"propertyType_TRI-VET-AAAFG",
"propertyType_TRI-VET-AAAFJ",
"propertyType_TRI-VET-AAAFK",
"propertyType_TRI-VET-AAAFL",
"propertyType_TRI-VET-AAAFR",
"propertyType_TRI-VET-AAAFT",
"propertyType_TRI-VET-AAAFW",
"propertyType_TRI-VET-AAAGA"
};
public static String[] YearFiles = {
"yearBuilt_DUABAAAY",
"yearBuilt_DUABAABD",
"yearBuilt_DUABAABK",
"yearBuilt_DUABAABO",
"yearBuilt_DUABAABR",
"yearBuilt_duabaabs",
"yearBuilt_DUABAABW",
"yearBuilt_DUABAABY",
"yearBuilt_DUABAACA",
"yearBuilt_DUABAACD",
"yearBuilt_DUABAACG",
"yearBuilt_DUABAACK",
"yearBuilt_DUABAACS",
"yearBuilt_DUABAACT",
"yearBuilt_DUABAACX",
"yearBuilt_DUACAAAA",
"yearBuilt_duacaaab",
"yearBuilt_DUACAAAC",
"yearBuilt_DUACAAAD",
"yearBuilt_DUACAAAE",
"yearBuilt_DUACAAAG",
"yearBuilt_duacaaas",
"yearBuilt_DUACAAGD",
"yearBuilt_gmacaacf",
"yearBuilt_SOACAABI",
"yearBuilt_SOACAABL",
"yearBuilt_SOACAABM",
"yearBuilt_soacaabn",
"yearBuilt_SOACAABQ",
"yearBuilt_SOACAABR",
"yearBuilt_SOACAABX",
"yearBuilt_SOACAACA",
"yearBuilt_SOACAACL",
"yearBuilt_SOACAAEF",
"yearBuilt_soacaafi",
"yearBuilt_SOACAAGH",
"yearBuilt_SOACAAGI",
"yearBuilt_SOADAABA",
"yearBuilt_SOADAABB",
"yearBuilt_SOADAABF",
"yearBuilt_SOADAABI",
"yearBuilt_soadaabm",
"yearBuilt_soadaabr",
"yearBuilt_SOADAALV",
"yearBuilt_TRI-PPB-PETTY",
"yearBuilt_TRI-VET-AAAAA",
"yearBuilt_TRI-VET-AAAAB",
"yearBuilt_TRI-VET-AAAAC",
"yearBuilt_TRI-VET-AAAAD",
"yearBuilt_TRI-VET-AAAAE",
"yearBuilt_TRI-VET-AAAAG",
"yearBuilt_TRI-VET-AAAAJ",
"yearBuilt_TRI-VET-AAAAL",
"yearBuilt_TRI-VET-AAAAM",
"yearBuilt_TRI-VET-AAAAO",
"yearBuilt_TRI-VET-AAAAR",
"yearBuilt_TRI-VET-AAAAS",
"yearBuilt_TRI-VET-AAAAU",
"yearBuilt_TRI-VET-AAAAW",
"yearBuilt_TRI-VET-AAAAX",
"yearBuilt_TRI-VET-AAAAZ",
"yearBuilt_TRI-VET-AAABC",
"yearBuilt_TRI-VET-AAABD",
"yearBuilt_TRI-VET-AAABF",
"yearBuilt_TRI-VET-AAABH",
"yearBuilt_TRI-VET-AAABK",
"yearBuilt_TRI-VET-AAABL",
"yearBuilt_TRI-VET-AAABM",
"yearBuilt_TRI-VET-AAABN",
"yearBuilt_TRI-VET-AAABT",
"yearBuilt_TRI-VET-AAABW",
"yearBuilt_TRI-VET-AAABX",
"yearBuilt_TRI-VET-AAABY",
"yearBuilt_TRI-VET-AAACC",
"yearBuilt_TRI-VET-AAACE",
"yearBuilt_TRI-VET-AAACF",
"yearBuilt_TRI-VET-AAACH",
"yearBuilt_TRI-VET-AAACJ",
"yearBuilt_TRI-VET-AAACR",
"yearBuilt_TRI-VET-AAACW",
"yearBuilt_TRI-VET-AAACZ",
"yearBuilt_TRI-VET-AAADB",
"yearBuilt_TRI-VET-AAADE",
"yearBuilt_TRI-VET-AAADH",
"yearBuilt_TRI-VET-AAADJ",
"yearBuilt_TRI-VET-AAADK",
"yearBuilt_TRI-VET-AAADL",
"yearBuilt_TRI-VET-AAADM",
"yearBuilt_TRI-VET-AAADN",
"yearBuilt_TRI-VET-AAADR",
"yearBuilt_TRI-VET-AAADS",
"yearBuilt_TRI-VET-AAADV",
"yearBuilt_TRI-VET-AAADW",
"yearBuilt_TRI-VET-AAADZ",
"yearBuilt_TRI-VET-AAAEA",
"yearBuilt_TRI-VET-AAAEE",
"yearBuilt_TRI-VET-AAAEG",
"yearBuilt_TRI-VET-AAAEH",
"yearBuilt_TRI-VET-AAAEM",
"yearBuilt_TRI-VET-AAAEP",
"yearBuilt_TRI-VET-AAAER",
"yearBuilt_TRI-VET-AAAET",
"yearBuilt_TRI-VET-AAAEV",
"yearBuilt_TRI-VET-AAAEW",
"yearBuilt_TRI-VET-AAAEZ",
"yearBuilt_TRI-VET-AAAFB",
"yearBuilt_TRI-VET-AAAFC",
"yearBuilt_TRI-VET-AAAFD",
"yearBuilt_TRI-VET-AAAFF",
"yearBuilt_TRI-VET-AAAFG",
"yearBuilt_TRI-VET-AAAFJ",
"yearBuilt_TRI-VET-AAAFK",
"yearBuilt_TRI-VET-AAAFR",
"yearBuilt_TRI-VET-AAAFS",
"yearBuilt_TRI-VET-AAAFW"
};
public static void main(String[] args) {
//CreateTrainTestData();
//Instances train1 = ClassifierTools.loadData(storepath + county + "\\" + county + "_10train");
//Instances test = ClassifierTools.loadData(storepath + county + "\\" + county + "_90test");
//Instances train1 = ClassifierTools.loadData(storepath + householdIncome + "\\" + householdIncome + "_10train");
//Instances test = ClassifierTools.loadData(storepath + householdIncome + "\\" + householdIncome + "_90test");
//Instances train1 = ClassifierTools.loadData(storepath + propertyType + "\\" + propertyType + "_10train");
//Instances test = ClassifierTools.loadData(storepath + propertyType + "\\" + propertyType + "_90test");
Instances train1 = ClassifierTools.loadData(storepath + yearBuilt + "\\" + yearBuilt + "_10train");
Instances test = ClassifierTools.loadData(storepath + yearBuilt + "\\" + yearBuilt + "_90test");
//OutFile results = new OutFile(storepath + county + "\\" + county + "_1090rawdataResults.csv");
//OutFile results = new OutFile(storepath + county + "\\" + county + "_1090acfResults.csv");
//OutFile results = new OutFile(storepath + county + "\\" + county + "_1090psResults.csv");
//OutFile results = new OutFile(storepath + county + "\\" + county + "_1090shapeletResults.csv");
//OutFile results = new OutFile(storepath + householdIncome + "\\" + householdIncome + "_1090rawdataResults.csv");
//OutFile results = new OutFile(storepath + householdIncome + "\\" + householdIncome + "_1090acfResults.csv");
//OutFile results = new OutFile(storepath + householdIncome + "\\" + householdIncome + "_1090psResults.csv");
//OutFile results = new OutFile(storepath + householdIncome + "\\" + householdIncome + "_1090shapeletResults.csv");
//OutFile results = new OutFile(storepath + propertyType + "\\" + propertyType + "_1090rawdataResults.csv");
//OutFile results = new OutFile(storepath + propertyType + "\\" + propertyType + "_1090acfResults.csv");
//OutFile results = new OutFile(storepath + propertyType + "\\" + propertyType + "_1090psResults.csv");
//OutFile results = new OutFile(storepath + propertyType + "\\" + propertyType + "_1090shapeletResults.csv");
//OutFile results = new OutFile(storepath + yearBuilt + "\\" + yearBuilt + "_1090rawdataResults.csv");
//OutFile results = new OutFile(storepath + yearBuilt + "\\" + yearBuilt + "_1090acfResults.csv");
OutFile results = new OutFile(storepath + yearBuilt + "\\" + yearBuilt + "_1090psResults.csv");
//OutFile results = new OutFile(storepath + yearBuilt + "\\" + yearBuilt + "_1090shapeletResults.csv");
//Instances train = TransformExamples.acfTransform(train1);
Instances train = TransformExamples.psTransform(train1);
System.out.println("transform complete...");
//Instances train = ClassifierTools.loadData(loadpath + "ElectricDevices_Train");
//Instances test=ClassifierTools.loadData("C:\\Users\\RooTsMan v4.0 n.a.i\\Documents\\UEA\\Year 4\\MCOMP project\\experiments\\ElectricDevices\\ElectricDevices_Test");
//LoadData(yearBuilt, YearFiles);
//DataAnalysis();
//Instances train = ClassifierTools.loadData(storepath + yearBuilt + "yearBuilt_train");
//Instances test = ClassifierTools.loadData(storepath + yearBuilt + "yearBuilt_test");
System.out.println("Training data length: " + train.numInstances());
System.out.println("Testing data length: " + test.numInstances());
//System.out.println("Whole data length: " + whole.numInstances());
System.out.println();
ArrayList<String> names = new ArrayList<String>();
Classifier[] c = setSingleClassifiers(names);
//OutFile results = new OutFile(storepath + yearBuilt + "yearBuilt_Results.csv");
//double[] dist = null;
//double[] classify_inst = new double[train.numInstances()];
//double classify_inst;
double[] correct = new double[c.length];
for (int i = 0; i < c.length; i++) {
double[] test_pred = new double[test.numInstances()];
System.out.println("Classifier: " + names.get(i));
try {
c[i].buildClassifier(train);
//} catch (Exception ex) {
// Logger.getLogger(ElectricityProfileClassification.class.getName()).log(Level.SEVERE, null, ex);
//}
System.out.println("Classifier " + names.get(i) + " built...");
//try {
//System.out.println(train.numInstances());
//train.setClassIndex(train.numAttributes() - 1);
//for (int j = 0; j < train.numInstances(); j++) {
//if (j % 500 == 0) {
// System.out.println("j = " + j);
//}
//classify_inst[j] = c[i].classifyInstance(train.instance(j));
//System.out.println(classify_inst);
//dist = c[i].distributionForInstance(train.instance(j));
//System.out.println(train.instance(j).classValue());
//}
//for(int blah = 0; blah < train.numInstances(); blah++){
// Instance inst = train.instance(blah);
// for(int other = 0; other < inst.numAttributes(); other++){
// if(Double.isInfinite(inst.value(other)) || Double.isNaN(inst.value(other))){
// System.out.println("Shouldn't have happened: " + blah + "; " + other );
// }
// }
//}
System.out.println("testing classifier...");
for (int j = 0; j < test.numInstances(); j++) {
//System.out.println(j);
test_pred[j] = c[i].classifyInstance(test.instance(j));
}
System.out.println("checking accuracy...");
for (int j = 0; j < test_pred.length; j++) {
if (test_pred[j] == test.instance(j).classValue()) {
correct[i]++;
}
}
//System.out.println("");
//System.out.println("dist values:");
//for (int k = 0; k < dist.length; k++) {
// System.out.println(dist[k]);
//}
//System.out.println("");
//System.out.println("classification instance values:");
//for (int k = 0; k < classify_inst.length; k++) {
// System.out.println(classify_inst[k]);
//}
System.out.println("");
} catch (Exception ex) {
Logger.getLogger(ElectricityProfileClassification.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("overall results;");
System.out.println("");
for (int i = 0; i < c.length; i++) {
double acc = correct[i] / test.numInstances();
results.writeLine(names.get(i) + "," + acc);
System.out.println(names.get(i) + "," + acc);
}
}
public static void CreateTrainTestData() {
Instances countywhole = ClassifierTools.loadData(storepath + county + "\\" + county + "_whole");
Instances householdIncomewhole = ClassifierTools.loadData(storepath + householdIncome + "\\" + householdIncome + "_whole");
Instances propertyTypewhole = ClassifierTools.loadData(storepath + propertyType + "\\" + propertyType + "_whole");
Instances yearBuiltwhole = ClassifierTools.loadData(storepath + yearBuilt + "\\" + yearBuilt + "_whole");
System.out.println("data loaded...");
OutFile countytrainfile=new OutFile(storepath+county+"\\"+county+"_40train.arff");
OutFile countytestfile=new OutFile(storepath+county+"\\"+county+"_60test.arff");
OutFile hitrainfile=new OutFile(storepath+householdIncome+"\\"+householdIncome+"_40train.arff");
OutFile hitestfile=new OutFile(storepath+householdIncome+"\\"+householdIncome+"_60test.arff");
OutFile pttrainfile=new OutFile(storepath+propertyType+"\\"+propertyType+"_40train.arff");
OutFile pttestfile=new OutFile(storepath+propertyType+"\\"+propertyType+"_60test.arff");
OutFile ybtrainfile=new OutFile(storepath+yearBuilt+"\\"+yearBuilt+"_40train.arff");
OutFile ybtestfile=new OutFile(storepath+yearBuilt+"\\"+yearBuilt+"_60test.arff");
System.out.println("files created...");
countywhole.randomize(new Random());
householdIncomewhole.randomize(new Random());
propertyTypewhole.randomize(new Random());
yearBuiltwhole.randomize(new Random());
System.out.println("data randomized...");
int countytrainSize = (int) Math.round(countywhole.numInstances() * 0.4);
int countytestSize = countywhole.numInstances() - countytrainSize;
int hitrainSize = (int) Math.round(householdIncomewhole.numInstances() * 0.4);
int hitestSize = householdIncomewhole.numInstances() - hitrainSize;
int pttrainSize = (int) Math.round(propertyTypewhole.numInstances() * 0.4);
int pttestSize = propertyTypewhole.numInstances() - pttrainSize;
int ybtrainSize = (int) Math.round(yearBuiltwhole.numInstances() * 0.4);
int ybtestSize = yearBuiltwhole.numInstances() - ybtrainSize;
System.out.println("train/test limits created...");
Instances countytrain = new Instances(countywhole, 0, countytrainSize);
Instances countytest = new Instances(countywhole, countytrainSize, countytestSize);
Instances hitrain = new Instances(householdIncomewhole, 0, hitrainSize);
Instances hitest = new Instances(householdIncomewhole, hitrainSize, hitestSize);
Instances pttrain = new Instances(propertyTypewhole, 0, pttrainSize);
Instances pttest = new Instances(propertyTypewhole, pttrainSize, pttestSize);
Instances ybtrain = new Instances(yearBuiltwhole, 0, ybtrainSize);
Instances ybtest = new Instances(yearBuiltwhole, ybtrainSize, ybtestSize);
System.out.println("train/test instances made...");
countytrainfile.writeString(countytrain.toString());
countytestfile.writeString(countytest.toString());
hitrainfile.writeString(hitrain.toString());
hitestfile.writeString(hitest.toString());
pttrainfile.writeString(pttrain.toString());
pttestfile.writeString(pttest.toString());
ybtrainfile.writeString(ybtrain.toString());
ybtestfile.writeString(ybtest.toString());
System.out.println("instances written to files...");
}
public static void DataAnalysis() {
Instances train = ClassifierTools.loadData(storepath + yearBuilt + "yearBuilt_train");
Instances test = ClassifierTools.loadData(storepath + yearBuilt + "yearBuilt_test");
Instances whole = ClassifierTools.loadData(storepath + yearBuilt + "yearBuilt_whole");
System.out.println("Training data length: " + train.numInstances());
System.out.println("Testing data length: " + test.numInstances());
System.out.println("Whole data length: " + whole.numInstances());
System.out.println();
int[] chk = new int[train.numClasses()];
for(int i = 0; i < train.numInstances(); i++) {
//System.out.println(whole.instance(i).classValue());
for(int j = 0; j < train.numClasses(); j++) {
if(train.instance(i).classValue() == j)
chk[j]++;
}
}
for(int i = 0; i < chk.length; i++) {
System.out.println("train: class "+i+" has "+ chk[i]+" values");
}
int[] chk1 = new int[test.numClasses()];
for(int i = 0; i < test.numInstances(); i++) {
//System.out.println(whole.instance(i).classValue());
for(int j = 0; j < test.numClasses(); j++) {
if(test.instance(i).classValue() == j)
chk1[j]++;
}
}
for(int i = 0; i < chk1.length; i++) {
System.out.println("test: class "+i+" has "+ chk1[i]+" values");
}
int[] chk2 = new int[whole.numClasses()];
for(int i = 0; i < whole.numInstances(); i++) {
//System.out.println(whole.instance(i).classValue());
for(int j = 0; j < whole.numClasses(); j++) {
if(whole.instance(i).classValue() == j)
chk2[j]++;
}
}
for(int i = 0; i < chk2.length; i++) {
System.out.println("whole: class "+i+" has "+ chk2[i]+" values");
}
}
public static void LoadData(String Type, String[] Typefiles) {
Instances data = ClassifierTools.loadData(loadpath + Type + Typefiles[0]);
for (int i = 1; i < Typefiles.length; i++) {
Instances file = ClassifierTools.loadData(loadpath + Type + Typefiles[i]);
for (int j = 0; j < file.numInstances(); j++) {
//System.out.println(file.numInstances());
data.add(file.instance(j));
}
}
TrainTestSplit(Type, data);
//return data;
}
public static void TrainTestSplit(String type, Instances alldata) {
OutFile combo=new OutFile(storepath+type+"yearBuilt_whole.arff");
OutFile trainfile=new OutFile(storepath+type+"yearBuilt_train.arff");
OutFile testfile=new OutFile(storepath+type+"yearBuilt_test.arff");
alldata.randomize(new Random());
//Instances alldata = ClassifierTools.loadData(storepath + type + "_whole");
int trainSize = (int) Math.round(alldata.numInstances() * 0.5);
int testSize = alldata.numInstances() - trainSize;
Instances train = new Instances(alldata, 0, trainSize);
Instances test = new Instances(alldata, trainSize, testSize);
combo.writeString(alldata.toString());
trainfile.writeString(train.toString());
testfile.writeString(test.toString());
//test.delete();
//train.randomize(new Random());
//int splitVal = train.numInstances() / 2;
//for (int i = 0; i < splitVal; i++) {
// test.add(train.firstInstance());
// train.delete(0);
// System.out.println("Training data length: " + train.numInstances());
// System.out.println("Testing data length: " + test.numInstances());
//}
//return test;
}
public static Classifier[] setSingleClassifiers(ArrayList<String> names) {
ArrayList<Classifier> sc2 = new ArrayList<Classifier>();
sc2.add(new IBk(1));
names.add("NN");
Classifier c;
// c=new DTW_kNN(1);
// ((DTW_kNN)c).setMaxR(0.01);
// sc2.add(c);
// names.add("NNDTW");
sc2.add(new NaiveBayes());
names.add("NB");
sc2.add(new J48());
names.add("C45");
c = new SMO();
PolyKernel kernel = new PolyKernel();
kernel.setExponent(1);
((SMO) c).setKernel(kernel);
sc2.add(c);
names.add("SVML");
c = new SMO();
kernel = new PolyKernel();
kernel.setExponent(2);
((SMO) c).setKernel(kernel);
sc2.add(c);
names.add("SVMQ");
c = new SMO();
c = new RandomForest();
((RandomForest) c).setNumTrees(30);
sc2.add(c);
names.add("RandF30");
c = new RandomForest();
((RandomForest) c).setNumTrees(100);
sc2.add(c);
names.add("RandF100");
c = new RandomForest();
((RandomForest) c).setNumTrees(500);
sc2.add(c);
names.add("RandF500");
c = new RotationForest();
sc2.add(c);
names.add("RotF30");
Classifier[] sc = new Classifier[sc2.size()];
for (int i = 0; i < sc.length; i++) {
sc[i] = sc2.get(i);
}
return sc;
}
}