private int setUpForEval(BitSet subset) throws Exception {
     
     int fc = 0;
     for (int jj = 0;jj < m_numAttributes; jj++) {
	if (subset.get(jj)) {
	  fc++;
	}
     }

     //int [] nbFs = new int [fc];
     //int count = 0;

     for (int j = 0; j < m_numAttributes; j++) {
	m_theInstances.attribute(j).setWeight(1.0); // reset weight
	if (j != m_theInstances.classIndex()) {
	  if (subset.get(j)) {
	//    nbFs[count++] = j;
	    m_theInstances.attribute(j).setWeight(0.0); // no influence for NB
	  }
	}
     }
     
     // process delete set
     for (int i = 0; i < m_numAttributes; i++) {
	if (m_deletedFromDTNB.get(i)) {
	   m_theInstances.attribute(i).setWeight(0.0); // no influence for NB
	}
     }
     
     if (m_NB == null) {
	// construct naive bayes for the first time
	m_NB = new NaiveBayes();
	m_NB.buildClassifier(m_theInstances);
     }
     return fc;
   }