weka Resampling Stacking J48 BRF - Java Machine Learning AI

Java examples for Machine Learning AI:weka

Description

weka Resampling Stacking J48 BRF

Demo Code

import java.io.FileWriter;
import java.util.ArrayList;

import weka.classifiers.Classifier;
import weka.classifiers.Evaluation;
import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.evaluation.Prediction;
import weka.classifiers.meta.Bagging;
import weka.classifiers.meta.Stacking;
import weka.classifiers.trees.J48;
import weka.classifiers.trees.RandomForest;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.supervised.instance.Resample;
import au.com.bytecode.opencsv.CSVWriter;

public class Main {

    public static void main(String[] args) throws Exception {
        /*from w  w w  .ja v  a  2s . c o m*/
        Instances train = DataSource
        read("./train1.arff");
        int cid1 = train.numAttributes() - 1;
        train.setClassIndex(cid1);


        Instances validation = DataSource
        read("./validation1.arff");
        int cid2 = validation.numAttributes() - 1;
        validation.setClassIndex(cid2);


        Instances test = DataSource
        read("./test1.arff");
        int cid3 = test.numAttributes() - 1;
        test.setClassIndex(cid3);

        //Resampling 17:83
        Resample rs = new Resample();
        rs.setBiasToUniformClass(0.3);
        rs.setInputFormat(train);
        rs.setSampleSizePercent(100);
        train = Filter.useFilter(train, rs);
        System.out.println(train.numInstances());

        NaiveBayes NB = new NaiveBayes();
        J48 j48_tree = new J48();
        RandomForest RF = new RandomForest();
        Bagging b1 = new Bagging();
        b1.setClassifier(j48_tree);
        Bagging b2 = new Bagging();
        b2.setClassifier(RF);

        Stacking tree = new Stacking();
        Classifier[] classifiers = new Classifier[2];
        classifiers[0] = b1;
        classifiers[1] = b2;
        tree.setClassifiers(classifiers);
        tree.setMetaClassifier(NB);
        tree.buildClassifier(train);


        Evaluation eval = new Evaluation(train);
        eval.evaluateModel(tree, validation);
        System.out.println(eval.toSummaryString("\nResults_RF\n\n", false));
        System.out.println(eval.toClassDetailsString());
        System.out.println(eval.toMatrixString());

        ArrayList<Prediction> al = eval.predictions();
        ArrayList<String[]> as = new ArrayList<String[]>(al.size());
        for (int i = 0; i < al.size(); i++) {
            String[] s = new String[1];
            s[0] = al.get(i).toString();
            s[0] = s[0].substring(9, 11);
            as.add(s);
        }
        ArrayList<String[]> li = new ArrayList<String[]>(al.size());
        li.addAll(as);



        String csv = "./output.csv";
        CSVWriter writer = new CSVWriter(new FileWriter(csv));

        writer.writeAll(li);
        writer.close();
    }

}

Related Tutorials