///////////////////////////////////////////////////////////////////////
       
// HOWTO: read ARFF file
       
//

       
Cell arff = new ArffReader();
       
System.out.println("Parameters available in ArffReader [default value]:");
       
System.out.print(arff.getAvailableParams());
       
        arff
.set("filename", "data/glass.arff");
        arff
.set("decisionAttr", "last");           // instead of "last" you can give attribute index, like "0", "1", ...
       
       
System.out.println("\nFirst 3 samples from ARFF file:");        
        arff
.open();
       
System.out.println(arff.next());
       
System.out.println(arff.next());
       
System.out.println(arff.next());
        arff
.close();        

       
       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: train and use Rseslib classifier
       
//

       
Cell learner = new RseslibClassifier("C45");
        learner
.set("pruning", "true");
        learner
.setSource(arff);
        learner
.learn();

       
System.out.println("\nFirst sample classified by C45 from Rseslib:");
        learner
.open();
       
System.out.println(learner.next());
        learner
.close();        


       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: train and use Weka classifier
       
//

        learner
= new WekaClassifier("J48");
       
System.out.println("\nParameters available in J48 from Weka [default value]:");
       
System.out.print(learner.getAvailableParams());

        learner
.set("minNumObj", "2");
        learner
.setSource(arff);
        learner
.learn();

       
System.out.println("\nFirst sample classified by J48:");
        learner
.open();
       
System.out.println(learner.next());
        learner
.close();        

       
       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: apply Weka filter
       
//

       
Cell filter = new WekaFilter("attribute.Remove");
        filter
.set("attributeIndices", "2-6");
        filter
.setSource(arff);

       
System.out.println("\nFirst 3 samples from ARFF file after filtering:");
        filter
.open();
       
System.out.println(filter.next());
       
System.out.println(filter.next());
       
System.out.println(filter.next());
        filter
.close();        

       
       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: set and get parameters (2 methods)
       
//

       
// 1st method:
        arff
.set("filename", "data/glass.arff");
        arff
.set("decisionAttr", "last");

       
// 2nd method:
       
Parameters par = new Parameters();
        par
.set("filename", "data/glass.arff");
        par
.set("decisionAttr", "last");
        arff
.setParameters(par);
       
System.out.println("\nParameters of the ARFF reader:");
       
System.out.println(arff.getParameters());
       
       
       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: evaluate a classifier through train & test
       
//

        learner
= new WekaClassifier("J48");
        learner
.set("confidenceFactor", "0.45");

       
EvaluatorCell tt = new TrainAndTest(learner);
        tt
.setSource(filter);
        tt
.set("repetitions", "10");       // run 10 independent trials of train & test
        tt
.set("trainPercent", "70");      // in each trial, use randomly selected 70% of data for training
        tt
.setRandomSeed(123);             // fix random seed to use the same data splits in every run of tt.learn()
        tt
.learn();                        // go!
       
System.out.println("\nResult of Train+Test:\n" + tt.report());
       
       
       
///////////////////////////////////////////////////////////////////////
       
// HOWTO: run cross-validation for a regression problem
       
//

       
// already done:   Cell arff = new ArffReader();
        arff
.set("filename", "data/cloud.arff");      // decision attribute in cloud.arff is real-valued
        arff
.set("decisionAttr", "last");
        learner
= new WekaClassifier("SMOreg");

       
EvaluatorCell cv = new CrossValidation(learner);
        cv
.setSource(arff);
        cv
.set("folds", "5");              // 5-fold cross-validation
        cv
.set("score", "RMSE");           // use Root Mean Squared Error to measure quality
        cv
.learn();
       
System.out.println("\nResult of Cross-Validation:     RMSE = " + cv.result()[0]);