📄 removewithvalues.java
字号:
m_NominalMapping = new int [oldAtt.numValues()]; for (int i = 0; i < m_NominalMapping.length; i++) { boolean found = false; for (int j = 0; j < selection.length; j++) { if (selection[j] == i) { m_NominalMapping[i] = j; found = true; break; } } if (!found) { m_NominalMapping[i] = -1; } } } setOutputFormat(instanceInfo); return true; } /** * Input an instance for filtering. Ordinarily the instance is processed * and made available for output immediately. Some filters require all * instances be read before producing output. * * @param instance the input instance * @return true if the filtered instance may now be * collected with output(). * @throws IllegalStateException if no input format has been set. */ public boolean input(Instance instance) { if (getInputFormat() == null) { throw new IllegalStateException("No input instance format defined"); } if (m_NewBatch) { resetQueue(); m_NewBatch = false; } if (instance.isMissing(m_AttIndex.getIndex())) { if (!getMatchMissingValues()) { push((Instance)instance.copy()); return true; } else { return false; } } if (isNumeric()) { if (!m_Values.getInvert()) { if (instance.value(m_AttIndex.getIndex()) < m_Value) { push((Instance)instance.copy()); return true; } } else { if (instance.value(m_AttIndex.getIndex()) >= m_Value) { push((Instance)instance.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(), m_NominalMapping[(int)instance.value(m_AttIndex.getIndex())]); } push(temp); return true; } } return false; } /** * 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(); } } /** * Returns true if selection attribute is numeric. * * @return true if selection attribute is numeric */ public boolean isNumeric() { if (getInputFormat() == null) { return false; } else { return getInputFormat().attribute(m_AttIndex.getIndex()).isNumeric(); } } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String modifyHeaderTipText() { return "When selecting on nominal attributes, removes header references to " + "excluded values."; } /** * Gets whether the header will be modified when selecting on nominal * attributes. * * @return true if so. */ public boolean getModifyHeader() { return m_ModifyHeader; } /** * Sets whether the header will be modified when selecting on nominal * attributes. * * @param newModifyHeader true if so. */ public void setModifyHeader(boolean newModifyHeader) { m_ModifyHeader = newModifyHeader; } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String attributeIndexTipText() { return "Choose attribute to be used for selection (default last)."; } /** * Get the index of the attribute used. * * @return the index of the attribute */ public String getAttributeIndex() { return m_AttIndex.getSingleIndex(); } /** * Sets index of the attribute used. * * @param attIndex the index of the attribute */ public void setAttributeIndex(String attIndex) { m_AttIndex.setSingleIndex(attIndex); } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String splitPointTipText() { return "Numeric value to be used for selection on numeric attribute. " + "Instances with values smaller than given value will be selected."; } /** * Get the split point used for numeric selection * * @return the numeric split point */ public double getSplitPoint() { return m_Value; } /** * Split point to be used for selection on numeric attribute. * * @param value the split point */ public void setSplitPoint(double value) { m_Value = value; } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String matchMissingValuesTipText() { return "Missing values count as a match. This setting is independent of " + "the invertSelection option."; } /** * Gets whether missing values are counted as a match. * * @return true if missing values are counted as a match. */ public boolean getMatchMissingValues() { return m_MatchMissingValues; } /** * Sets whether missing values are counted as a match. * * @param newMatchMissingValues true if missing values are counted as a match. */ public void setMatchMissingValues(boolean newMatchMissingValues) { m_MatchMissingValues = newMatchMissingValues; } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String invertSelectionTipText() { return "Invert matching sense."; } /** * Get whether the supplied columns are to be removed or kept * * @return true if the supplied columns will be kept */ public boolean getInvertSelection() { return !m_Values.getInvert(); } /** * Set whether selected values should be removed or kept. If true the * selected values are kept and unselected values are deleted. * * @param invert the new invert setting */ public void setInvertSelection(boolean invert) { m_Values.setInvert(!invert); } /** * Returns the tip text for this property * @return tip text for this property suitable for * displaying in the explorer/experimenter gui */ public String nominalIndicesTipText() { return "Range of label indices to be used for selection on nominal attribute. " +"First and last are valid indexes."; } /** * Get the set of nominal value indices that will be used for selection * * @return rangeList a string representing the list of nominal indices. */ public String getNominalIndices() { return m_Values.getRanges(); } /** * Set which nominal labels are to be included in the selection. * * @param rangeList a string representing the list of nominal indices. * eg: first-3,5,6-last * @throws InvalidArgumentException if an invalid range list is supplied */ public void setNominalIndices(String rangeList) { m_Values.setRanges(rangeList); } /** * 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 * @throws InvalidArgumentException if an invalid set of ranges is supplied */ 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); } /** * 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); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -