/** Creates a default RemoveWithValues */ public Filter getFilter() { RemoveWithValues f = new RemoveWithValues(); f.setAttributeIndex("3"); f.setInvertSelection(true); return f; }
/** * Set which values of a nominal attribute are to be used for selection. * * @param values an array containing indexes of values to be used for * selection */ public void setNominalIndicesArr(int[] values) { String rangeList = ""; for (int i = 0; i < values.length; i++) { if (i == 0) { rangeList = "" + (values[i] + 1); } else { rangeList += "," + (values[i] + 1); } } setNominalIndices(rangeList); }
Instances data; RemoveWithValues filter = new RemoveWithValues(); String[] options = new String[4]; options[0] = "-C"; // attribute index options[1] = "5"; // 5 options[2] = "-S"; // match if value is smaller than options[3] = "10"; // 10 filter.setOptions(options); filter.setInputFormat(data); Instances newData = Filter.useFilter(data, filter);
/** * Main method for testing this class. * * @param argv should contain arguments to the filter: use -h for help */ public static void main(String[] argv) { runFilter(new RemoveWithValues(), argv); } }
setAttributeIndex(attIndex); } else { setAttributeIndex("last"); setSplitPoint((new Double(splitPoint)).doubleValue()); } else { setSplitPoint(0); setNominalIndices(convertList); } else { setNominalIndices("first-last"); setInvertSelection(Utils.getFlag('V', options)); setMatchMissingValues(Utils.getFlag('M', options)); setModifyHeader(Utils.getFlag('H', options)); setDontFilterAfterFirstBatch(Utils.getFlag('F', options)); if (getInputFormat() != null) { setInputFormat(getInputFormat());
RemoveWithValues classFilter = new RemoveWithValues(); classFilter.setAttributeIndex("" + (insts.classIndex() + 1)); classFilter.setModifyHeader(true); classFilter.setInvertSelection(true); classFilter.setNominalIndicesArr((int[])pairs.get(i)); Instances tempInstances = new Instances(insts, 0); tempInstances.setClassIndex(-1); classFilter.setInputFormat(tempInstances); newInsts = Filter.useFilter(insts, classFilter); if (newInsts.numInstances() > 0 || zeroTrainingInstances) {
if (getInputFormat() == null) { throw new IllegalStateException("No input instance format defined"); resetQueue(); m_NewBatch = false; if (isFirstBatchDone() && m_dontFilterAfterFirstBatch) { push((Instance) instance.copy(), false); // No need to copy return true; if (!getMatchMissingValues()) { push((Instance) instance.copy(), false); // No need to copy return true; } else { if (isNumeric()) { if (!m_Values.getInvert()) { if (instance.value(m_AttIndex.getIndex()) < m_Value) { push((Instance) instance.copy(), false); // No need to copy return true; push((Instance) instance.copy(), false); // No need to copy return true; if (isNominal()) { if (m_Values.isInRange((int) instance.value(m_AttIndex.getIndex()))) { Instance temp = (Instance) instance.copy(); if (getModifyHeader()) { temp.setValue(m_AttIndex.getIndex(),
/** * Gets the current settings of the filter. * * @return an array of strings suitable for passing to setOptions */ @Override public String[] getOptions() { Vector<String> options = new Vector<String>(); options.add("-S"); options.add("" + getSplitPoint()); options.add("-C"); options.add("" + (getAttributeIndex())); if (!getNominalIndices().equals("")) { options.add("-L"); options.add(getNominalIndices()); } if (getInvertSelection()) { options.add("-V"); } if (getMatchMissingValues()) { options.add("-M"); } if (getModifyHeader()) { options.add("-H"); } if (getDontFilterAfterFirstBatch()) { options.add("-F"); } return options.toArray(new String[0]); }
public void testMatchMissingValues() { ((RemoveWithValues)m_Filter).setAttributeIndex("5"); ((RemoveWithValues)m_Filter).setInvertSelection(false); ((RemoveWithValues)m_Filter).setMatchMissingValues(false); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(result.numInstances() > 0); for (int i = 0; i < result.numInstances(); i++) { assertTrue("Should select only instances with missing values", result.instance(i).isMissing(4)); } }
public void testNumeric() { ((RemoveWithValues)m_Filter).setAttributeIndex("3"); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals("Default split point matches values less than 0", 0, result.numInstances()); ((RemoveWithValues)m_Filter).setSplitPoint(3); result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(m_Instances.numInstances() > result.numInstances()); // Test inversion is working. ((RemoveWithValues)m_Filter).setInvertSelection(false); Instances result2 = useFilter(); assertEquals(m_Instances.numAttributes(), result2.numAttributes()); assertTrue(m_Instances.numInstances() > result2.numInstances()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); }
public void testNominal() { ((RemoveWithValues)m_Filter).setAttributeIndex("2"); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals("Default nominal selection matches all values", m_Instances.numInstances(), result.numInstances()); try { ((RemoveWithValues)m_Filter).setNominalIndices("1-2"); } catch (Exception ex) { fail("Shouldn't ever get here unless Range chamges incompatibly"); } result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(m_Instances.numInstances() > result.numInstances()); try { ((RemoveWithValues)m_Filter).setNominalIndices("3-last"); } catch (Exception ex) { fail("Shouldn't ever get here unless Range chamges incompatibly"); } Instances result2 = useFilter(); assertEquals(m_Instances.numAttributes(), result2.numAttributes()); assertTrue(m_Instances.numInstances() > result2.numInstances()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); ((RemoveWithValues)m_Filter).setInvertSelection(false); result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); }
public void testString() { Instances icopy = new Instances(m_Instances); try { ((RemoveWithValues)m_Filter).setAttributeIndex("1"); m_Filter.setInputFormat(icopy); fail("Should have thrown an exception selecting on a STRING attribute!"); } catch (Exception ex) { // OK } }
/** * Returns true if selection attribute is nominal. * * @return true if selection attribute is nominal */ public boolean isNominal() { if (getInputFormat() == null) { return false; } else { return getInputFormat().attribute(m_AttIndex.getIndex()).isNominal(); } }
setAttributeIndex(attIndex); } else { setAttributeIndex("last"); setSplitPoint((new Double(splitPoint)).doubleValue()); } else { setSplitPoint(0); setNominalIndices(convertList); } else { setNominalIndices("first-last"); setInvertSelection(Utils.getFlag('V', options)); setMatchMissingValues(Utils.getFlag('M', options)); setModifyHeader(Utils.getFlag('H', options)); setDontFilterAfterFirstBatch(Utils.getFlag('F', options)); if (getInputFormat() != null) { setInputFormat(getInputFormat());
RemoveWithValues classFilter = new RemoveWithValues(); classFilter.setAttributeIndex("" + (insts.classIndex() + 1)); classFilter.setModifyHeader(true); classFilter.setInvertSelection(true); classFilter.setNominalIndicesArr((int[])pairs.get(i)); Instances tempInstances = new Instances(insts, 0); tempInstances.setClassIndex(-1); classFilter.setInputFormat(tempInstances); newInsts = Filter.useFilter(insts, classFilter); if (newInsts.numInstances() > 0 || zeroTrainingInstances) {
if (getInputFormat() == null) { throw new IllegalStateException("No input instance format defined"); resetQueue(); m_NewBatch = false; if (isFirstBatchDone() && m_dontFilterAfterFirstBatch) { push((Instance) instance.copy(), false); // No need to copy return true; if (!getMatchMissingValues()) { push((Instance) instance.copy(), false); // No need to copy return true; } else { if (isNumeric()) { if (!m_Values.getInvert()) { if (instance.value(m_AttIndex.getIndex()) < m_Value) { push((Instance) instance.copy(), false); // No need to copy return true; push((Instance) instance.copy(), false); // No need to copy return true; if (isNominal()) { if (m_Values.isInRange((int) instance.value(m_AttIndex.getIndex()))) { Instance temp = (Instance) instance.copy(); if (getModifyHeader()) { temp.setValue(m_AttIndex.getIndex(),
/** * Gets the current settings of the filter. * * @return an array of strings suitable for passing to setOptions */ @Override public String[] getOptions() { Vector<String> options = new Vector<String>(); options.add("-S"); options.add("" + getSplitPoint()); options.add("-C"); options.add("" + (getAttributeIndex())); if (!getNominalIndices().equals("")) { options.add("-L"); options.add(getNominalIndices()); } if (getInvertSelection()) { options.add("-V"); } if (getMatchMissingValues()) { options.add("-M"); } if (getModifyHeader()) { options.add("-H"); } if (getDontFilterAfterFirstBatch()) { options.add("-F"); } return options.toArray(new String[0]); }
public void testMatchMissingValues() { ((RemoveWithValues)m_Filter).setAttributeIndex("5"); ((RemoveWithValues)m_Filter).setInvertSelection(false); ((RemoveWithValues)m_Filter).setMatchMissingValues(false); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(result.numInstances() > 0); for (int i = 0; i < result.numInstances(); i++) { assertTrue("Should select only instances with missing values", result.instance(i).isMissing(4)); } }
public void testNumeric() { ((RemoveWithValues)m_Filter).setAttributeIndex("3"); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals("Default split point matches values less than 0", 0, result.numInstances()); ((RemoveWithValues)m_Filter).setSplitPoint(3); result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(m_Instances.numInstances() > result.numInstances()); // Test inversion is working. ((RemoveWithValues)m_Filter).setInvertSelection(false); Instances result2 = useFilter(); assertEquals(m_Instances.numAttributes(), result2.numAttributes()); assertTrue(m_Instances.numInstances() > result2.numInstances()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); }
public void testNominal() { ((RemoveWithValues)m_Filter).setAttributeIndex("2"); Instances result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals("Default nominal selection matches all values", m_Instances.numInstances(), result.numInstances()); try { ((RemoveWithValues)m_Filter).setNominalIndices("1-2"); } catch (Exception ex) { fail("Shouldn't ever get here unless Range chamges incompatibly"); } result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertTrue(m_Instances.numInstances() > result.numInstances()); try { ((RemoveWithValues)m_Filter).setNominalIndices("3-last"); } catch (Exception ex) { fail("Shouldn't ever get here unless Range chamges incompatibly"); } Instances result2 = useFilter(); assertEquals(m_Instances.numAttributes(), result2.numAttributes()); assertTrue(m_Instances.numInstances() > result2.numInstances()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); ((RemoveWithValues)m_Filter).setInvertSelection(false); result = useFilter(); assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals(m_Instances.numInstances(), result.numInstances() + result2.numInstances()); }