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)); }