public MBR() { // default classifier for GUI this.m_Classifier = new BR(); }
public static void main(String[] args) throws Exception { if (args.length != 1) throw new IllegalArgumentException("Required arguments: <dataset>"); System.out.println("Loading data: " + args[0]); Instances data = DataSource.read(args[0]); MLUtils.prepareData(data); System.out.println("Build BR classifier"); BR classifier = new BR(); // further configuration of classifier classifier.buildClassifier(data); } }
public static void main(String[] args) throws Exception { if (args.length != 2) throw new IllegalArgumentException("Required arguments: <train> <predict>"); System.out.println("Loading train: " + args[0]); Instances train = DataSource.read(args[0]); MLUtils.prepareData(train); System.out.println("Loading predict: " + args[1]); Instances predict = DataSource.read(args[1]); MLUtils.prepareData(predict); // compatible? String msg = train.equalHeadersMsg(predict); if (msg != null) throw new IllegalStateException(msg); System.out.println("Build BR classifier on " + args[0]); BR classifier = new BR(); // further configuration of classifier classifier.buildClassifier(train); System.out.println("Use BR classifier on " + args[1]); for (int i = 0; i < predict.numInstances(); i++) { double[] dist = classifier.distributionForInstance(predict.instance(i)); System.out.println((i+1) + ": " + Utils.arrayToString(dist)); } } }
public static double[][] LEAD(Instances D, Classifier h, Random r, String MDType) throws Exception { Instances D_r = new Instances(D); D_r.randomize(r); Instances D_train = new Instances(D_r,0,D_r.numInstances()*60/100); Instances D_test = new Instances(D_r,D_train.numInstances(),D_r.numInstances()-D_train.numInstances()); BR br = new BR(); br.setClassifier(h); Result result = Evaluation.evaluateModel((MultiLabelClassifier)br,D_train,D_test,"PCut1","1"); return LEAD(D_test, result, MDType); }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); if(getDebug()) System.out.print("Creating "+L+" models ("+m_Classifier.getClass().getName()+"): "); m_MultiClassifiers = AbstractClassifier.makeCopies(m_Classifier,L); m_InstancesTemplates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' Instances D_j = F.keepLabels(new Instances(D),L,new int[]{j}); D_j.setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(D_j); if(getDebug()) System.out.print(" " + (D_j.classAttribute().name())); m_InstancesTemplates[j] = new Instances(D_j, 0); } }
@Override public void buildClassifier(Instances data) throws Exception { testCapabilities(data); int c = data.classIndex(); // Base BR if (getDebug()) System.out.println("Build BR Base ("+c+" models)"); m_BASE = (BR)AbstractClassifier.forName(getClassifier().getClass().getName(),((AbstractClassifier)getClassifier()).getOptions()); m_BASE.buildClassifier(data); // Meta BR if (getDebug()) System.out.println("Prepare Meta data "); Instances meta_data = new Instances(data); FastVector BinaryClass = new FastVector(c); BinaryClass.addElement("0"); BinaryClass.addElement("1"); for(int i = 0; i < c; i++) { meta_data.insertAttributeAt(new Attribute("metaclass"+i,BinaryClass),c); } for(int i = 0; i < data.numInstances(); i++) { double cfn[] = m_BASE.distributionForInstance(data.instance(i)); for(int a = 0; a < cfn.length; a++) { meta_data.instance(i).setValue(a+c,cfn[a]); } } meta_data.setClassIndex(c); m_InstancesTemplate = new Instances(meta_data, 0); if (getDebug()) System.out.println("Build BR Meta ("+c+" models)"); m_META = (BR)AbstractClassifier.forName(getClassifier().getClass().getName(),((AbstractClassifier)getClassifier()).getOptions()); m_META.buildClassifier(meta_data); }
@Override public double[] distributionForInstance(Instance instance) throws Exception { int c = instance.classIndex(); double result[] = m_BASE.distributionForInstance(instance); instance.setDataset(null); for (int i = 0; i < c; i++) { instance.insertAttributeAt(c); } instance.setDataset(m_InstancesTemplate); for (int i = 0; i < c; i++) { instance.setValue(c+i,result[i]); } return m_META.distributionForInstance(instance); }
public static double[][] LEAD(Instances D, Classifier h, Random r, String MDType) throws Exception { Instances D_r = new Instances(D); D_r.randomize(r); Instances D_train = new Instances(D_r,0,D_r.numInstances()*60/100); Instances D_test = new Instances(D_r,D_train.numInstances(),D_r.numInstances()-D_train.numInstances()); BR br = new BR(); br.setClassifier(h); Result result = Evaluation.evaluateModel((MultiLabelClassifier)br,D_train,D_test,"PCut1","1"); return LEAD(D_test, result, MDType); }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); if(getDebug()) System.out.print("Creating "+L+" models ("+m_Classifier.getClass().getName()+"): "); m_MultiClassifiers = AbstractClassifier.makeCopies(m_Classifier,L); m_InstancesTemplates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' Instances D_j = F.keepLabels(new Instances(D),L,new int[]{j}); D_j.setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(D_j); if(getDebug()) System.out.print(" " + (D_j.classAttribute().name())); m_InstancesTemplates[j] = new Instances(D_j, 0); } }
@Override public void buildClassifier(Instances data) throws Exception { testCapabilities(data); int c = data.classIndex(); // Base BR if (getDebug()) System.out.println("Build BR Base ("+c+" models)"); m_BASE = (BR)AbstractClassifier.forName(getClassifier().getClass().getName(),((AbstractClassifier)getClassifier()).getOptions()); m_BASE.buildClassifier(data); // Meta BR if (getDebug()) System.out.println("Prepare Meta data "); Instances meta_data = new Instances(data); FastVector BinaryClass = new FastVector(c); BinaryClass.addElement("0"); BinaryClass.addElement("1"); for(int i = 0; i < c; i++) { meta_data.insertAttributeAt(new Attribute("metaclass"+i,BinaryClass),c); } for(int i = 0; i < data.numInstances(); i++) { double cfn[] = m_BASE.distributionForInstance(data.instance(i)); for(int a = 0; a < cfn.length; a++) { meta_data.instance(i).setValue(a+c,cfn[a]); } } meta_data.setClassIndex(c); m_InstancesTemplate = new Instances(meta_data, 0); if (getDebug()) System.out.println("Build BR Meta ("+c+" models)"); m_META = (BR)AbstractClassifier.forName(getClassifier().getClass().getName(),((AbstractClassifier)getClassifier()).getOptions()); m_META.buildClassifier(meta_data); }
@Override public double[] distributionForInstance(Instance instance) throws Exception { int c = instance.classIndex(); double result[] = m_BASE.distributionForInstance(instance); instance.setDataset(null); for (int i = 0; i < c; i++) { instance.insertAttributeAt(c); } instance.setDataset(m_InstancesTemplate); for (int i = 0; i < c; i++) { instance.setValue(c+i,result[i]); } return m_META.distributionForInstance(instance); }
protected Classifier getDefaultClassifier() { return new BR(); }
/** * LEAD - Performs LEAD on dataset 'D', using BR with base classifier 'h', under random seed 'r'. * <br> * WARNING: changing this method will affect the perfomance of e.g., BCC -- on the other hand the original BCC paper did not use LEAD, so don't worry. */ public static double[][] LEAD(Instances D, Classifier h, Random r) throws Exception { Instances D_r = new Instances(D); D_r.randomize(r); Instances D_train = new Instances(D_r,0,D_r.numInstances()*60/100); Instances D_test = new Instances(D_r,D_train.numInstances(),D_r.numInstances()-D_train.numInstances()); BR br = new BR(); br.setClassifier(h); Result result = Evaluation.evaluateModel((MultiLabelClassifier)br,D_train,D_test,"PCut1","1"); return LEAD2(D_test,result); }
public static void main(String[] args) throws Exception { if (args.length != 2) throw new IllegalArgumentException("Required arguments: <train> <test>"); System.out.println("Loading train: " + args[0]); Instances train = DataSource.read(args[0]); MLUtils.prepareData(train); System.out.println("Loading test: " + args[1]); Instances test = DataSource.read(args[1]); MLUtils.prepareData(test); // compatible? String msg = train.equalHeadersMsg(test); if (msg != null) throw new IllegalStateException(msg); System.out.println("Build BR classifier on " + args[0]); BR classifier = new BR(); // further configuration of classifier classifier.buildClassifier(train); System.out.println("Evaluate BR classifier on " + args[1]); String top = "PCut1"; String vop = "3"; Result result = Evaluation.evaluateModel(classifier, train, test, top, vop); System.out.println(result); } }
public SubsetMapper() { // default classifier for GUI this.m_Classifier = new BR(); }
/** * LEAD - Performs LEAD on dataset 'D', using BR with base classifier 'h', under random seed 'r'. * <br> * WARNING: changing this method will affect the perfomance of e.g., BCC -- on the other hand the original BCC paper did not use LEAD, so don't worry. */ public static double[][] LEAD(Instances D, Classifier h, Random r) throws Exception { Instances D_r = new Instances(D); D_r.randomize(r); Instances D_train = new Instances(D_r,0,D_r.numInstances()*60/100); Instances D_test = new Instances(D_r,D_train.numInstances(),D_r.numInstances()-D_train.numInstances()); BR br = new BR(); br.setClassifier(h); Result result = Evaluation.evaluateModel((MultiLabelClassifier)br,D_train,D_test,"PCut1","1"); return LEAD2(D_test,result); }
public static void main(String[] args) throws Exception { if (args.length != 2) throw new IllegalArgumentException("Required arguments: <dataset> <percentage>"); System.out.println("Loading data: " + args[0]); Instances data = DataSource.read(args[0]); MLUtils.prepareData(data); double percentage = Double.parseDouble(args[1]); int trainSize = (int) (data.numInstances() * percentage / 100.0); Instances train = new Instances(data, 0, trainSize); Instances test = new Instances(data, trainSize, data.numInstances() - trainSize); System.out.println("Build BR classifier on " + percentage + "%"); BR classifier = new BR(); // further configuration of classifier classifier.buildClassifier(train); System.out.println("Evaluate BR classifier on " + (100.0 - percentage) + "%"); String top = "PCut1"; String vop = "3"; Result result = Evaluation.evaluateModel(classifier, train, test, top, vop); System.out.println(result); } }
public SubsetMapper() { // default classifier for GUI this.m_Classifier = new BR(); }
BR classifier = new BR(); classifier.buildClassifier(train);
public MBR() { // default classifier for GUI this.m_Classifier = new BR(); }