m_ClassAttribute = instances.classAttribute();
  public void buildClassifier(Instances instances) throws Exception{    if (instances.checkForStringAttributes())      throw new UnsupportedAttributeTypeException("Cannot handle string attributes!");	    m_ClassAttribute = instances.classAttribute();	    Instances data = new Instances(instances);    data.deleteWithMissingClass();	    if(data.numInstances() < m_Folds)      throw new Exception("Not enough data for REP.");    if(m_ClassAttribute.isNominal())      m_NumClasses = m_ClassAttribute.numValues();    else      m_NumClasses = 1;	    m_Antds = new FastVector();    m_DefDstr = new double[m_NumClasses];    m_Cnsqt = new double[m_NumClasses];    m_Targets = new FastVector();		    if(m_IsRandomized){  // Randomize the data      if(m_Random == null){		    	if(m_Seed == -1)	  m_Seed = System.currentTimeMillis();	m_Random = new Random(m_Seed);      }	          data.randomize(m_Random);    }		    if(m_NumAntds != -1){      grow(data);    }    else{      // Split data into Grow and Prune	         data.stratify(m_Folds);	      Instances growData=data.trainCV(m_Folds, m_Folds-1);      Instances pruneData=data.testCV(m_Folds, m_Folds-1);      grow(growData);      // Build this rule        prune(pruneData);    // Prune this rule		  	      }	    if(m_ClassAttribute.isNominal()){			         Utils.normalize(m_Cnsqt);      if(Utils.gr(Utils.sum(m_DefDstr), 0))	Utils.normalize(m_DefDstr);    }	  }