/** * Sets the type of the meta classifier and initializes the ensemble * * @param metaClassifier * @throws Exception */ public void setMetaAlgorithm(Classifier metaClassifier) throws Exception { this.metaClassifier = metaClassifier; metaLevelEnsemble = AbstractClassifier.makeCopies(metaClassifier, numLabels); }
/** * Stump method for building the classifiers. * * @param data the training data to be used for generating the * bagged classifier. * @exception Exception if the classifier could not be built successfully */ public void buildClassifier(Instances data) throws Exception { if (m_Classifier == null) { throw new Exception("A base classifier has not been specified!"); } m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, m_NumIterations); }
/** * Stump method for building the classifiers. * * @param data the training data to be used for generating the * bagged classifier. * @exception Exception if the classifier could not be built successfully */ public void buildClassifier(Instances data) throws Exception { if (m_Classifier == null) { throw new Exception("A base classifier has not been specified!"); } m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, m_NumIterations); }
@Override public void buildClassifier(Instances D) throws Exception { int L = D.classIndex(); int N = D.numInstances(); Random random = new Random(m_S); // Note: a slightly roundabout way of doing it: int num = (int)Math.ceil(L / m_K); kMap = SuperLabelUtils.generatePartition(A.make_sequence(L),num,random,true); m_M = kMap.length; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M]; if (getDebug()) System.out.println("Building "+m_M+" models of "+m_K+" partitions:"); for(int i = 0; i < m_M; i++) { if (getDebug()) System.out.println("\tpartitioning model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])+", P="+m_P+", N="+m_N); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i],m_P,m_N); if (getDebug()) System.out.println("\tbuilding model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { int L = D.classIndex(); int N = D.numInstances(); Random random = new Random(m_S); // Note: a slightly roundabout way of doing it: int num = (int)Math.ceil(L / m_K); kMap = SuperLabelUtils.generatePartition(A.make_sequence(L),num,random,true); m_M = kMap.length; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M]; if (getDebug()) System.out.println("Building "+m_M+" models of "+m_K+" partitions:"); for(int i = 0; i < m_M; i++) { if (getDebug()) System.out.println("\tpartitioning model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])+", P="+m_P+", N="+m_N); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i],m_P,m_N); if (getDebug()) System.out.println("\tbuilding model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); Random random = new Random(m_S); if (getDebug()) System.out.println("Building "+m_M+" models of "+m_K+" random subsets:"); m_InstancesTemplates = new Instances[m_M]; kMap = new int[m_M][m_K]; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); for(int i = 0; i < m_M; i++) { kMap[i] = SuperLabelUtils.get_k_subset(L,m_K,random); if (getDebug()) System.out.println("\tmodel "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])+", P="+m_P+", N="+m_N); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i],m_P,m_N); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); Random random = new Random(m_S); if (getDebug()) System.out.println("Building "+m_M+" models of "+m_K+" random subsets:"); m_InstancesTemplates = new Instances[m_M]; kMap = new int[m_M][m_K]; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); for(int i = 0; i < m_M; i++) { kMap[i] = SuperLabelUtils.get_k_subset(L,m_K,random); if (getDebug()) System.out.println("\tmodel "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])+", P="+m_P+", N="+m_N); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i],m_P,m_N); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { int L = D.classIndex(); int N = D.numInstances(); // Get partition from dataset hierarchy kMap = SuperLabelUtils.getPartitionFromDatasetHierarchy(D); m_M = kMap.length; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M]; for(int i = 0; i < m_M; i++) { if (getDebug()) System.out.println("Building model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i]); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { int L = D.classIndex(); int N = D.numInstances(); // Get partition from dataset hierarchy kMap = SuperLabelUtils.getPartitionFromDatasetHierarchy(D); m_M = kMap.length; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M]; for(int i = 0; i < m_M; i++) { if (getDebug()) System.out.println("Building model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i]); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@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_Templates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' m_Templates[j] = MLUtils.keepAttributesAt(new Instances(D),new int[]{j},L); m_Templates[j].setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(m_Templates[j]); if(getDebug()) System.out.print(" " + (m_Templates[j].classAttribute().name())); m_Templates[j] = new Instances(m_Templates[j], 0); } }
@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 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_Templates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' m_Templates[j] = MLUtils.keepAttributesAt(new Instances(D),new int[]{j},L); m_Templates[j].setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(m_Templates[j]); if(getDebug()) System.out.print(" " + (m_Templates[j].classAttribute().name())); m_Templates[j] = new Instances(m_Templates[j], 0); } }
@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 = MLUtils.keepAttributesAt(new Instances(D),new int[]{j},L); 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 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_Templates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' m_Templates[j] = MLUtils.keepAttributesAt(new Instances(D),new int[]{j},L); m_Templates[j].setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(m_Templates[j]); if(getDebug()) System.out.print(" " + (m_Templates[j].classAttribute().name())); m_Templates[j] = new Instances(m_Templates[j], 0); } }
@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); } }
m_M = kMap.length; vMap = new int[m_M][][]; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M];
m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, m_NumIterations);
/** * Builds the classifiers. * * @param insts the training data. * @throws Exception if a classifier can't be built */ public void buildClassifier(Instances insts) throws Exception { Instances newInsts; // can classifier handle the data? getCapabilities().testWithFail(insts); // remove instances with missing class insts = new Instances(insts); insts.deleteWithMissingClass(); m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, insts.numClasses()); m_ClassFilters = new MakeIndicator[insts.numClasses()]; for (int i = 0; i < insts.numClasses(); i++) { m_ClassFilters[i] = new MakeIndicator(); m_ClassFilters[i].setAttributeIndex("" + (insts.classIndex() + 1)); m_ClassFilters[i].setValueIndex(i); m_ClassFilters[i].setNumeric(true); m_ClassFilters[i].setInputFormat(insts); newInsts = Filter.useFilter(insts, m_ClassFilters[i]); m_Classifiers[i].buildClassifier(newInsts); } }
/** * Builds the classifiers. * * @param insts the training data. * @throws Exception if a classifier can't be built */ public void buildClassifier(Instances insts) throws Exception { Instances newInsts; // can classifier handle the data? getCapabilities().testWithFail(insts); // remove instances with missing class insts = new Instances(insts); insts.deleteWithMissingClass(); m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, insts.numClasses()); m_ClassFilters = new MakeIndicator[insts.numClasses()]; for (int i = 0; i < insts.numClasses(); i++) { m_ClassFilters[i] = new MakeIndicator(); m_ClassFilters[i].setAttributeIndex("" + (insts.classIndex() + 1)); m_ClassFilters[i].setValueIndex(i); m_ClassFilters[i].setNumeric(true); m_ClassFilters[i].setInputFormat(insts); newInsts = Filter.useFilter(insts, m_ClassFilters[i]); m_Classifiers[i].buildClassifier(newInsts); } }
Random r) throws Exception { Classifier [] copies = AbstractClassifier.makeCopies(fullModel, 5); Evaluation eval = new Evaluation(trainingSet);