@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); } }