i++;
  public double evaluateSubset (BitSet subset)    throws Exception {    double errorRate = 0;    double[] repError = new double[5];    boolean ok = true;    int numAttributes = 0;    int i, j;    Random Rnd = new Random(m_seed);    Remove delTransform = new Remove();    delTransform.setInvertSelection(true);    // copy the instances    Instances trainCopy = new Instances(m_trainInstances);    // count attributes set in the BitSet    for (i = 0; i < m_numAttribs; i++) {      if (subset.get(i)) {        numAttributes++;      }    }    // set up an array of attribute indexes for the filter (+1 for the class)    int[] featArray = new int[numAttributes + 1];    for (i = 0, j = 0; i < m_numAttribs; i++) {      if (subset.get(i)) {        featArray[j++] = i;      }    }    featArray[j] = m_classIndex;    delTransform.setAttributeIndicesArray(featArray);    delTransform.setInputFormat(trainCopy);    trainCopy = Filter.useFilter(trainCopy, delTransform);    // max of 5 repititions ofcross validation    for (i = 0; i < 5; i++) {      m_Evaluation = new Evaluation(trainCopy);      m_Evaluation.crossValidateModel(m_BaseClassifier, trainCopy, m_folds, Rnd);      repError[i] = m_Evaluation.errorRate();      // check on the standard deviation      if (!repeat(repError, i + 1)) {        break;      }    }    for (j = 0; j < i; j++) {      errorRate += repError[j];    }    errorRate /= (double)i;    m_Evaluation = null;    return  -errorRate;  }