public double getCriterionValue(int[] features) {
    /*
     * Extract the desired components of each vector and
     * create a new VectorSet. This resulting set is used
     * for cross-validation.
     */
    Map<double[], ClassDescriptor> origData = original.getData();
    String[] origLabels = original.getFeatureLables();
    Map<double[], ClassDescriptor> newData = new HashMap<double[], ClassDescriptor>();
    String[] newLabels = new String[features.length];

    for (double[] v : origData.keySet()) {
      double[] v1 = new double[features.length];

      for (int i = 0; i < features.length; i++) {
        v1[i] = v[features[i]];
      }

      newData.put(v1, origData.get(v));
    }

    for (int i = 0; i < features.length; i++) {
      newLabels[i] = origLabels[features[i]];
    }

    return validate(new VectorSet(newData, newLabels));
  }