From 43c86afdbc4e00b32c8df76f8d7cce415884206c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Mar=C3=ADa=20Moyano?= Date: Wed, 27 Feb 2019 12:55:22 +0100 Subject: [PATCH] Included cross-validation procedure Now, it is able to execute cross-validation procedure if no test set is provided. It needs the number of folds to execute. --- src/executeMulan/ExecuteMulanAlgorithm.java | 37 ++++++++- src/executeMulan/Main.java | 82 ++++++++++++------- src/executeMulan/mlc/ExecuteAdaBoostMH.java | 25 ++++-- src/executeMulan/mlc/ExecuteBPMLL.java | 24 ++++-- src/executeMulan/mlc/ExecuteBR.java | 27 ++++-- src/executeMulan/mlc/ExecuteCC.java | 24 ++++-- src/executeMulan/mlc/ExecuteCDE.java | 26 ++++-- src/executeMulan/mlc/ExecuteCLR.java | 27 ++++-- src/executeMulan/mlc/ExecuteEBR.java | 24 ++++-- src/executeMulan/mlc/ExecuteECC.java | 24 ++++-- src/executeMulan/mlc/ExecuteEPS.java | 24 ++++-- src/executeMulan/mlc/ExecuteEPS_1.java | 24 ++++-- src/executeMulan/mlc/ExecuteHOMER.java | 25 ++++-- src/executeMulan/mlc/ExecuteIBLR.java | 25 ++++-- src/executeMulan/mlc/ExecuteLP.java | 25 ++++-- src/executeMulan/mlc/ExecuteLPBR.java | 25 ++++-- src/executeMulan/mlc/ExecuteMLS.java | 25 ++++-- src/executeMulan/mlc/ExecuteMLkNN.java | 4 +- src/executeMulan/mlc/ExecutePS.java | 25 ++++-- src/executeMulan/mlc/ExecuteRAkEL.java | 24 ++++-- src/executeMulan/mlc/ExecuteRFPCT.java | 68 +++++++-------- src/executeMulan/mtr/ExecuteERC.java | 28 +++++-- .../{ExecuteMORF.java => ExecuteMORF_.java} | 2 +- src/executeMulan/mtr/ExecuteRC.java | 26 ++++-- src/executeMulan/mtr/ExecuteRLC.java | 26 ++++-- src/executeMulan/mtr/ExecuteSST.java | 27 ++++-- src/executeMulan/mtr/ExecuteST.java | 24 ++++-- 27 files changed, 522 insertions(+), 225 deletions(-) rename src/executeMulan/mtr/{ExecuteMORF.java => ExecuteMORF_.java} (98%) diff --git a/src/executeMulan/ExecuteMulanAlgorithm.java b/src/executeMulan/ExecuteMulanAlgorithm.java index e8c24a0..c692bba 100644 --- a/src/executeMulan/ExecuteMulanAlgorithm.java +++ b/src/executeMulan/ExecuteMulanAlgorithm.java @@ -7,6 +7,7 @@ import mulan.data.MultiLabelInstances; import mulan.evaluation.Evaluation; import mulan.evaluation.Evaluator; +import mulan.evaluation.MultipleEvaluation; import mulan.evaluation.measure.*; import mulan.evaluation.measures.regression.example.ExampleBasedRMaxSE; import mulan.evaluation.measures.regression.macro.MacroMAE; @@ -24,16 +25,25 @@ public class ExecuteMulanAlgorithm { public MultiLabelInstances testSet = null; public Evaluator eval = new Evaluator(); public Evaluation results; + public MultipleEvaluation mResults; public List measures = new ArrayList(); public long time_in, time_fin, total_time; + public int nFolds; - public void prepareExecution(String tvalue, String Tvalue, String xvalue, String ovalue) { + public void prepareExecution(String tvalue, String Tvalue, String xvalue, String ovalue, int fvalue) { try { trainingSet = new MultiLabelInstances(tvalue, xvalue); - testSet = new MultiLabelInstances(Tvalue, xvalue); - pw = new PrintWriter(new FileWriter(ovalue, true)); + if(fvalue <= 0) { + testSet = new MultiLabelInstances(Tvalue, xvalue); + } + else { + testSet = null; + } + nFolds = fvalue; + pw = new PrintWriter(new FileWriter(ovalue, true)); + } catch (Exception e) { e.printStackTrace(); } @@ -77,6 +87,27 @@ public void printResults(String tvalue, boolean lvalue, String algorithm) throws pw.println(); } + public void printResultsCV(String tvalue, boolean lvalue, String algorithm) throws Exception { + String [] p = tvalue.split("\\/"); + String datasetName = p[p.length-1].split("\\.")[0]; + pw.print(algorithm + "_" + datasetName + ";"); + + for(Measure m : measures) { + pw.print(mResults.getMean(m.getName()) + ";"); + + if((lvalue) && (m.getClass().getName().contains("Macro"))) + { + for(int l=0; l Single Target"); System.out.println("\t\t\tSST -> Stacked ST"); + //Number of folds if cross-validation + System.out.println("\t -f Number of folds for cross-validation. If not set, do not perform CV."); + //Number of seed numbers == Number of executions System.out.println("\t -i Number of random seeds"); @@ -59,12 +62,14 @@ public static void showUse() public static void main(String [] args) { - String tvalue=null, Tvalue=null, xvalue=null, avalue=null, ovalue=null, lvalueStr=null, ivalueStr=null; + String tvalue=null, Tvalue=null, xvalue=null, avalue=null, ovalue=null, lvalueStr=null, ivalueStr=null, fvalueStr=null; //By default, macro measures are not shown for each label boolean lvalue = false; //By default, 10 random seeds are used int ivalue = 10; + //By default, cross-validation is not performed + int fvalue = -1; try { tvalue = Utils.getOption("t", args); @@ -73,14 +78,11 @@ public static void main(String [] args) avalue = Utils.getOption("a", args); ovalue = Utils.getOption("o", args); - if((tvalue.length() == 0) || (Tvalue.length() == 0) || (xvalue.length() == 0) || (avalue.length() == 0) || (ovalue.length() == 0)) + if((tvalue.length() == 0) || (xvalue.length() == 0) || (avalue.length() == 0) || (ovalue.length() == 0)) { if(tvalue.length() == 0) { System.out.println("Please enter the train dataset filename."); } - if(Tvalue.length() == 0) { - System.out.println("Please enter the test dataset filename."); - } if(xvalue.length() == 0) { System.out.println("Please enter the xml dataset filename."); } @@ -109,6 +111,24 @@ public static void main(String [] args) if(ivalueStr.length() != 0) { ivalue = Integer.parseInt(ivalueStr); } + + fvalueStr = Utils.getOption("f", args); + if(fvalueStr.length() != 0) { + fvalue = Integer.parseInt(fvalueStr); + } + + if(fvalue > 0 && (Tvalue.length() > 0)) { + System.out.println("Including both test file and CV procedure is not allowed."); + showUse(); + System.exit(1); + } + else if(fvalue <= 0 && (Tvalue.length() == 0)) { + System.out.println("Please set test file or number of folds for CV procedure."); + showUse(); + System.exit(1); + } + + } catch (Exception e) { showUse(); System.exit(1); @@ -118,102 +138,102 @@ public static void main(String [] args) if(avalue.equalsIgnoreCase("AdaBoostMH")) { ExecuteAdaBoostMH a = new ExecuteAdaBoostMH(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("BPMLL")) { ExecuteBPMLL a = new ExecuteBPMLL(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("BR")) { ExecuteBR a = new ExecuteBR(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("CC")) { ExecuteCC a = new ExecuteCC(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("CLR")) { ExecuteCLR a = new ExecuteCLR(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("EBR")) { ExecuteEBR a = new ExecuteEBR(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("ECC")) { ExecuteECC a = new ExecuteECC(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("EPS")) { ExecuteEPS a = new ExecuteEPS(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("EPS_1")) { ExecuteEPS_1 a = new ExecuteEPS_1(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("CDE")) { ExecuteCDE a = new ExecuteCDE(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("HOMER")) { ExecuteHOMER a = new ExecuteHOMER(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("IBLR")) { ExecuteIBLR a = new ExecuteIBLR(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("LP")) { ExecuteLP a = new ExecuteLP(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("LPBR")) { ExecuteLPBR a = new ExecuteLPBR(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("MLKNN")) { ExecuteMLkNN a = new ExecuteMLkNN(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("MLS")) { ExecuteMLS a = new ExecuteMLS(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("PS")) { ExecutePS a = new ExecutePS(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.toUpperCase().equalsIgnoreCase("RAKEL")) { ExecuteRAkEL a = new ExecuteRAkEL(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("RFPCT")) { ExecuteRFPCT a = new ExecuteRFPCT(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("ERC")) { ExecuteERC a = new ExecuteERC(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } // else if(avalue.equalsIgnoreCase("MORF")) // { @@ -223,22 +243,22 @@ else if(avalue.equalsIgnoreCase("ERC")) else if(avalue.equalsIgnoreCase("RC")) { ExecuteRC a = new ExecuteRC(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("RLC")) { ExecuteRLC a = new ExecuteRLC(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, ivalue, fvalue); } else if(avalue.equalsIgnoreCase("ST")) { ExecuteST a = new ExecuteST(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else if(avalue.equalsIgnoreCase("SST")) { ExecuteSST a = new ExecuteSST(); - a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue); + a.execute(tvalue, Tvalue, xvalue, ovalue, lvalue, fvalue); } else { diff --git a/src/executeMulan/mlc/ExecuteAdaBoostMH.java b/src/executeMulan/mlc/ExecuteAdaBoostMH.java index bd34fc1..a86bfae 100644 --- a/src/executeMulan/mlc/ExecuteAdaBoostMH.java +++ b/src/executeMulan/mlc/ExecuteAdaBoostMH.java @@ -4,10 +4,10 @@ public class ExecuteAdaBoostMH extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); AdaBoostMH learner = null; @@ -16,10 +16,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new AdaBoostMH(); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -28,7 +34,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "AdaBoost.MH"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "AdaBoost.MH"); + } + else { + printResultsCV(tvalue, lvalue, "AdaBoost.MH"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteBPMLL.java b/src/executeMulan/mlc/ExecuteBPMLL.java index 07593bf..b9fcb6d 100644 --- a/src/executeMulan/mlc/ExecuteBPMLL.java +++ b/src/executeMulan/mlc/ExecuteBPMLL.java @@ -4,10 +4,10 @@ public class ExecuteBPMLL extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); BPMLL learner = null; @@ -18,10 +18,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new BPMLL(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -34,7 +39,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "BPMLL"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "BPMLL"); + } + else { + printResultsCV(tvalue, lvalue, "BPMLL"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteBR.java b/src/executeMulan/mlc/ExecuteBR.java index 291fd7f..ab4663d 100644 --- a/src/executeMulan/mlc/ExecuteBR.java +++ b/src/executeMulan/mlc/ExecuteBR.java @@ -5,10 +5,10 @@ public class ExecuteBR extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); BinaryRelevance learner = null; @@ -17,11 +17,17 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new BinaryRelevance(new J48()); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); - + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } + time_fin = System.currentTimeMillis(); total_time = time_fin - time_in; @@ -29,7 +35,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "BR"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "BR"); + } + else { + printResultsCV(tvalue, lvalue, "BR"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteCC.java b/src/executeMulan/mlc/ExecuteCC.java index c3b5031..8f5a112 100644 --- a/src/executeMulan/mlc/ExecuteCC.java +++ b/src/executeMulan/mlc/ExecuteCC.java @@ -7,10 +7,10 @@ public class ExecuteCC extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); ClassifierChain learner = null; @@ -35,11 +35,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, } learner = new ClassifierChain(new J48(), chain); - - learner.build(trainingSet); - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -52,7 +57,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "CC"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "CC"); + } + else { + printResultsCV(tvalue, lvalue, "CC"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteCDE.java b/src/executeMulan/mlc/ExecuteCDE.java index 34513c4..fc9fe4d 100644 --- a/src/executeMulan/mlc/ExecuteCDE.java +++ b/src/executeMulan/mlc/ExecuteCDE.java @@ -8,10 +8,10 @@ public class ExecuteCDE extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); EnsembleOfSubsetLearners learner = null; @@ -23,12 +23,17 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner.setSeed(i*10); learner.setNumOfRandomPartitions(10000); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } - time_fin = System.currentTimeMillis(); + time_fin = System.currentTimeMillis(); total_time = time_fin - time_in; @@ -39,7 +44,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "CDE"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "CDE"); + } + else { + printResultsCV(tvalue, lvalue, "CDE"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteCLR.java b/src/executeMulan/mlc/ExecuteCLR.java index 9d96201..e274a4c 100644 --- a/src/executeMulan/mlc/ExecuteCLR.java +++ b/src/executeMulan/mlc/ExecuteCLR.java @@ -5,10 +5,10 @@ public class ExecuteCLR extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); CalibratedLabelRanking learner = null; @@ -17,11 +17,17 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new CalibratedLabelRanking(new J48()); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); - + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } + time_fin = System.currentTimeMillis(); total_time = time_fin - time_in; @@ -29,7 +35,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "CLR"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "CLR"); + } + else { + printResultsCV(tvalue, lvalue, "CLR"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteEBR.java b/src/executeMulan/mlc/ExecuteEBR.java index 9b00e52..c027eef 100644 --- a/src/executeMulan/mlc/ExecuteEBR.java +++ b/src/executeMulan/mlc/ExecuteEBR.java @@ -3,10 +3,10 @@ public class ExecuteEBR extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); EBR learner = null; @@ -17,10 +17,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new EBR(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -33,7 +38,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "EBR"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "EBR"); + } + else { + printResultsCV(tvalue, lvalue, "EBR"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteECC.java b/src/executeMulan/mlc/ExecuteECC.java index a94b0e5..bb910e4 100644 --- a/src/executeMulan/mlc/ExecuteECC.java +++ b/src/executeMulan/mlc/ExecuteECC.java @@ -3,10 +3,10 @@ public class ExecuteECC extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); ECC learner = null; @@ -17,10 +17,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new ECC(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -33,7 +38,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "ECC"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "ECC"); + } + else { + printResultsCV(tvalue, lvalue, "ECC"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteEPS.java b/src/executeMulan/mlc/ExecuteEPS.java index 5d3bad4..66a6970 100644 --- a/src/executeMulan/mlc/ExecuteEPS.java +++ b/src/executeMulan/mlc/ExecuteEPS.java @@ -3,10 +3,10 @@ public class ExecuteEPS extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); EPS learner = null; @@ -17,10 +17,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new EPS(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -33,7 +38,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "EPS"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "EPS"); + } + else { + printResultsCV(tvalue, lvalue, "EPS"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteEPS_1.java b/src/executeMulan/mlc/ExecuteEPS_1.java index 6e3223e..ca3eff8 100644 --- a/src/executeMulan/mlc/ExecuteEPS_1.java +++ b/src/executeMulan/mlc/ExecuteEPS_1.java @@ -3,10 +3,10 @@ public class ExecuteEPS_1 extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); EPS_1 learner = null; @@ -17,10 +17,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new EPS_1(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -33,7 +38,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "EPS_1"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "EPS_1"); + } + else { + printResultsCV(tvalue, lvalue, "EPS_1"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteHOMER.java b/src/executeMulan/mlc/ExecuteHOMER.java index 50e1308..d5db9e8 100644 --- a/src/executeMulan/mlc/ExecuteHOMER.java +++ b/src/executeMulan/mlc/ExecuteHOMER.java @@ -4,10 +4,10 @@ public class ExecuteHOMER extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); HOMER learner = null; @@ -16,10 +16,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new HOMER(); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -28,7 +34,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "HOMER"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "HOMER"); + } + else { + printResultsCV(tvalue, lvalue, "HOMER"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteIBLR.java b/src/executeMulan/mlc/ExecuteIBLR.java index c3b9390..ae3a118 100644 --- a/src/executeMulan/mlc/ExecuteIBLR.java +++ b/src/executeMulan/mlc/ExecuteIBLR.java @@ -4,10 +4,10 @@ public class ExecuteIBLR extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); IBLR_ML learner = null; @@ -16,10 +16,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new IBLR_ML(); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -28,7 +34,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "IBLR"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "IBLR"); + } + else { + printResultsCV(tvalue, lvalue, "IBLR"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteLP.java b/src/executeMulan/mlc/ExecuteLP.java index dcc59d0..a122b87 100644 --- a/src/executeMulan/mlc/ExecuteLP.java +++ b/src/executeMulan/mlc/ExecuteLP.java @@ -5,10 +5,10 @@ public class ExecuteLP extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); LabelPowerset learner = null; @@ -17,10 +17,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new LabelPowerset(new J48()); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -29,7 +35,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "LP"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "LP"); + } + else { + printResultsCV(tvalue, lvalue, "LP"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteLPBR.java b/src/executeMulan/mlc/ExecuteLPBR.java index 934d04c..5dde0eb 100644 --- a/src/executeMulan/mlc/ExecuteLPBR.java +++ b/src/executeMulan/mlc/ExecuteLPBR.java @@ -9,10 +9,10 @@ public class ExecuteLPBR extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); SubsetLearner learner = null; @@ -21,10 +21,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new SubsetLearner(new GreedyLabelClustering(new BinaryRelevance(new J48()), new J48(), new ConditionalDependenceIdentifier(new J48())), new LabelPowerset(new J48()), new J48()); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -33,7 +39,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "LPBR"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "LPBR"); + } + else { + printResultsCV(tvalue, lvalue, "LPBR"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteMLS.java b/src/executeMulan/mlc/ExecuteMLS.java index c5ce2db..82b9ae9 100644 --- a/src/executeMulan/mlc/ExecuteMLS.java +++ b/src/executeMulan/mlc/ExecuteMLS.java @@ -4,10 +4,10 @@ public class ExecuteMLS extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); MultiLabelStacking learner = null; @@ -16,10 +16,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new MultiLabelStacking(); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -28,7 +34,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "MLS"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "MLS"); + } + else { + printResultsCV(tvalue, lvalue, "MLS"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteMLkNN.java b/src/executeMulan/mlc/ExecuteMLkNN.java index c3fcc89..b3154da 100644 --- a/src/executeMulan/mlc/ExecuteMLkNN.java +++ b/src/executeMulan/mlc/ExecuteMLkNN.java @@ -4,10 +4,10 @@ public class ExecuteMLkNN extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); MLkNN learner = null; diff --git a/src/executeMulan/mlc/ExecutePS.java b/src/executeMulan/mlc/ExecutePS.java index 5141e36..a26678e 100644 --- a/src/executeMulan/mlc/ExecutePS.java +++ b/src/executeMulan/mlc/ExecutePS.java @@ -4,10 +4,10 @@ public class ExecutePS extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); PrunedSets learner = null; @@ -16,10 +16,16 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, time_in = System.currentTimeMillis(); learner = new PrunedSets(); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -28,7 +34,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, System.out.println("Execution time (ms): " + total_time); printHeader(lvalue); - printResults(Tvalue, lvalue, "PS"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "PS"); + } + else { + printResultsCV(tvalue, lvalue, "PS"); + } } catch(Exception e1) { diff --git a/src/executeMulan/mlc/ExecuteRAkEL.java b/src/executeMulan/mlc/ExecuteRAkEL.java index 48b2c76..3582384 100644 --- a/src/executeMulan/mlc/ExecuteRAkEL.java +++ b/src/executeMulan/mlc/ExecuteRAkEL.java @@ -6,10 +6,10 @@ public class ExecuteRAkEL extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); RAkEL learner = null; @@ -21,10 +21,15 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new RAkEL(new LabelPowerset(new J48())); learner.setSeed(i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); + measures = prepareMeasuresClassification(trainingSet); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, measures, nFolds); + } + else { + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + } time_fin = System.currentTimeMillis(); @@ -37,7 +42,12 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, printHeader(lvalue); } - printResults(Tvalue, lvalue, "RAkEL"); + if(nFolds <= 0) { + printResults(Tvalue, lvalue, "RAkEL"); + } + else { + printResultsCV(tvalue, lvalue, "RAkEL"); + } }//End for diff --git a/src/executeMulan/mlc/ExecuteRFPCT.java b/src/executeMulan/mlc/ExecuteRFPCT.java index 9c509d4..3cd09be 100644 --- a/src/executeMulan/mlc/ExecuteRFPCT.java +++ b/src/executeMulan/mlc/ExecuteRFPCT.java @@ -18,43 +18,47 @@ public class ExecuteRFPCT extends ExecuteMulanAlgorithm { - public void execute(String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute(String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); - RFPCT learner = null; - - /* The seeds are 10, 20, 30, ... */ - for(int i=1; i<=nIter; i++) - { - time_in = System.currentTimeMillis(); - - learner = new RFPCT("libs/Clus.jar", 10, i*10); + if(nFolds > 0) { + System.out.println("Not able to execute with cross-validation procedure."); + } + else { + RFPCT learner = null; + + /* The seeds are 10, 20, 30, ... */ + for(int i=1; i<=nIter; i++) + { + time_in = System.currentTimeMillis(); + + learner = new RFPCT("libs/Clus.jar", 10, i*10); - learner.build(trainingSet); - - measures = prepareMeasuresClassification(trainingSet); - results = eval.evaluate(learner, testSet, measures); - - LabelMatrix lm = getLabelsClus(testSet.getNumInstances(), testSet.getNumLabels()); - results = evaluate(lm.realLabels, lm.predLabels, measures); - - time_fin = System.currentTimeMillis(); - - total_time = time_fin - time_in; - - System.out.println("Execution time (ms): " + total_time); + measures = prepareMeasuresClassification(trainingSet); - //Print header only in first iteration - if(i == 1) { - printHeader(lvalue); - } - - printResults(Tvalue, lvalue, "RF-PCT"); - - }//End for - + learner.build(trainingSet); + results = eval.evaluate(learner, testSet, measures); + + LabelMatrix lm = getLabelsClus(testSet.getNumInstances(), testSet.getNumLabels()); + results = evaluate(lm.realLabels, lm.predLabels, measures); + + time_fin = System.currentTimeMillis(); + + total_time = time_fin - time_in; + + System.out.println("Execution time (ms): " + total_time); + + //Print header only in first iteration + if(i == 1) { + printHeader(lvalue); + } + + printResults(Tvalue, lvalue, "RF-PCT"); + + }//End for + } } catch(Exception e1) { diff --git a/src/executeMulan/mtr/ExecuteERC.java b/src/executeMulan/mtr/ExecuteERC.java index 7a6103e..e56a42b 100644 --- a/src/executeMulan/mtr/ExecuteERC.java +++ b/src/executeMulan/mtr/ExecuteERC.java @@ -5,10 +5,10 @@ public class ExecuteERC extends ExecuteMulanAlgorithm { - public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter) + public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, boolean lvalue, int nIter, int fvalue) { try{ - prepareExecution(tvalue, Tvalue, xvalue, ovalue); + prepareExecution(tvalue, Tvalue, xvalue, ovalue, fvalue); EnsembleOfRegressorChains learner = null; @@ -20,12 +20,19 @@ public void execute (String tvalue, String Tvalue, String xvalue, String ovalue, learner = new EnsembleOfRegressorChains(); learner.setSeed(i*10); learner.setMeta(RegressorChain.metaType.INSAMPLE); + + if(nFolds > 0) { + mResults = eval.crossValidate(learner, trainingSet, nFolds); + for(int m=0; m 0) { + mResults = eval.crossValidate(learner, trainingSet, nFolds); + for(int m=0; m 0) { + mResults = eval.crossValidate(learner, trainingSet, nFolds); + for(int m=0; m 0) { + mResults = eval.crossValidate(learner, trainingSet, nFolds); + for(int m=0; m 0) { + mResults = eval.crossValidate(learner, trainingSet, nFolds); + for(int m=0; m