if (m_ASEvaluator instanceof UnsupervisedSubsetEvaluator) { m_subsetResults = new double[split.numAttributes()]; } else { m_subsetResults = new double[split.numAttributes() - 1]; }  if (!(m_ASEvaluator instanceof UnsupervisedSubsetEvaluator) && !(m_ASEvaluator instanceof UnsupervisedAttributeEvaluator)) {  m_rankResults = new double[4][split.numAttributes() - 1]; } else { m_rankResults = new double[4][split.numAttributes()]; }
m_subsetResults = new double[split.numAttributes()]; m_rankResults = new double[4][split.numAttributes()];
  public void selectAttributesCVSplit(Instances split) throws Exception {    double[][] attributeRanking = null;    // if the train instances are null then set equal to this split.    // If this is the case then this function is more than likely being    // called from outside this class in order to obtain CV statistics    // and all we need m_trainIstances for is to get at attribute names    // and types etc.    if (m_trainInstances == null) {      m_trainInstances = split;    }    // create space to hold statistics    if (m_rankResults == null && m_subsetResults == null) {      if (m_ASEvaluator instanceof UnsupervisedSubsetEvaluator) {	m_subsetResults = new double[split.numAttributes()];      }      else {	m_subsetResults = new double[split.numAttributes() - 1];      }            if (!(m_ASEvaluator instanceof UnsupervisedSubsetEvaluator) && 	  !(m_ASEvaluator instanceof UnsupervisedAttributeEvaluator)) {	m_rankResults = new double[4][split.numAttributes() - 1];      }      else {	m_rankResults = new double[4][split.numAttributes()];      }    }    m_ASEvaluator.buildEvaluator(split);    // Do the search    int[] attributeSet = m_searchMethod.search(m_ASEvaluator, 					       split);    // Do any postprocessing that a attribute selection method might     // require    attributeSet = m_ASEvaluator.postProcess(attributeSet);        if ((m_searchMethod instanceof RankedOutputSearch) && 	(m_doRank == true)) {      attributeRanking = ((RankedOutputSearch)m_searchMethod).	rankedAttributes();            // System.out.println(attributeRanking[0][1]);      for (int j = 0; j < attributeRanking.length; j++) {	// merit	m_rankResults[0][(int)attributeRanking[j][0]] += 	  attributeRanking[j][1];	// squared merit	m_rankResults[2][(int)attributeRanking[j][0]] += 	  (attributeRanking[j][1]*attributeRanking[j][1]);	// rank	m_rankResults[1][(int)attributeRanking[j][0]] += (j + 1);	// squared rank	m_rankResults[3][(int)attributeRanking[j][0]] += (j + 1)*(j + 1);	// += (attributeRanking[j][0] * attributeRanking[j][0]);      }    } else {      for (int j = 0; j < attributeSet.length; j++) {	m_subsetResults[attributeSet[j]]++;      }    }    m_trials++;  }