|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object weka.filters.Filter weka.filters.unsupervised.attribute.AddExpression
Applys a mathematical expression involving attributes and numeric constants to a dataset. A new attribute is appended after the last attribute that contains the result of applying the expression. Supported operators are: +, -, *, /, ^, log, abs, cos, exp, sqrt, floor, ceil, rint, tan, sin, (, ). Attributes are specified by prefixing with 'a', eg. a7 is attribute number 7 (starting from 1).
Valid filter-specific options are:
-E expression
Specify the expression to apply. Eg. a1^2*a5/log(a7*4.0).
-N name
Specify a name for the new attribute. Default is to name it with the
expression provided with the -E option.
-D
Debug. Names the attribute with the postfix parse of the expression.
Nested Class Summary | |
private class |
AddExpression.AttributeOperand
Inner class handling an attribute index as an operand |
private class |
AddExpression.NumericOperand
Inner class for storing numeric constant opperands |
private class |
AddExpression.Operator
Inner class for storing operators |
Field Summary | |
private java.lang.String |
m_attributeName
Name of the new attribute. |
private boolean |
m_Debug
If true, makes the attribute name equal to the postfix parse of the expression |
private java.lang.String |
m_infixExpression
The infix expression |
private java.util.Stack |
m_operatorStack
Operator stack |
private java.util.Vector |
m_postFixExpVector
Holds the expression in postfix form |
private java.lang.String |
m_previousTok
Holds the previous token |
private boolean |
m_signMod
True if the next numeric constant or attribute index is negative |
private static java.lang.String |
OPERATORS
Supported operators. l = log, b = abs, c = cos, e = exp, s = sqrt, f = floor, h = ceil, r = rint, t = tan, n = sin |
private static java.lang.String |
UNARY_FUNCTIONS
|
Fields inherited from class weka.filters.Filter |
m_NewBatch |
Constructor Summary | |
AddExpression()
|
Method Summary | |
private void |
convertInfixToPostfix(java.lang.String infixExp)
Converts a string containing a mathematical expression in infix form to postfix form. |
java.lang.String |
debugTipText()
Returns the tip text for this property |
private void |
evaluateExpression(double[] vals)
Evaluate the expression using the supplied array of attribute values. |
java.lang.String |
expressionTipText()
Returns the tip text for this property |
boolean |
getDebug()
Gets whether debug is set |
java.lang.String |
getExpression()
Get the expression |
java.lang.String |
getName()
Returns the name of the new attribute |
java.lang.String[] |
getOptions()
Gets the current settings of the filter. |
java.lang.String |
globalInfo()
Returns a string describing this filter |
private void |
handleOperand(java.lang.String tok)
Handles the processing of an infix operand to postfix |
private void |
handleOperator(java.lang.String tok)
Handles the processing of an infix operator to postfix |
private int |
infixPriority(char opp)
Return the infix priority of an operator |
boolean |
input(Instance instance)
Input an instance for filtering. |
private boolean |
isOperator(char tok)
Returns true if a token is an operator |
private boolean |
isUnaryFunction(char tok)
Returns true if a token is a unary function |
java.util.Enumeration |
listOptions()
Returns an enumeration describing the available options. |
static void |
main(java.lang.String[] args)
Main method for testing this class. |
java.lang.String |
nameTipText()
Returns the tip text for this property |
void |
setDebug(boolean d)
Set debug mode. |
void |
setExpression(java.lang.String expr)
Set the expression to apply |
boolean |
setInputFormat(Instances instanceInfo)
Sets the format of the input instances. |
void |
setName(java.lang.String name)
Set the name for the new attribute. |
void |
setOptions(java.lang.String[] options)
Parses a list of options for this object. |
private int |
stackPriority(char opp)
Return the stack priority of an operator |
Methods inherited from class weka.filters.Filter |
batchFilterFile, batchFinished, bufferInput, copyStringValues, copyStringValues, filterFile, flushInput, getInputFormat, getInputStringIndex, getOutputFormat, getOutputStringIndex, getStringIndices, inputFormat, inputFormatPeek, isOutputFormatDefined, numPendingOutput, output, outputFormat, outputFormatPeek, outputPeek, push, resetQueue, setOutputFormat, useFilter |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private java.lang.String m_infixExpression
private java.util.Stack m_operatorStack
private static final java.lang.String OPERATORS
private static final java.lang.String UNARY_FUNCTIONS
private java.util.Vector m_postFixExpVector
private boolean m_signMod
private java.lang.String m_previousTok
private java.lang.String m_attributeName
private boolean m_Debug
Constructor Detail |
public AddExpression()
Method Detail |
public java.lang.String globalInfo()
private void handleOperand(java.lang.String tok) throws java.lang.Exception
tok
- the infix operand
java.lang.Exception
- if there is difficulty parsing the operandprivate void handleOperator(java.lang.String tok) throws java.lang.Exception
tok
- the infix operator
java.lang.Exception
- if there is difficulty parsing the operatorprivate void convertInfixToPostfix(java.lang.String infixExp) throws java.lang.Exception
infixExp
- the infix expression to convert
java.lang.Exception
- if something goes wrong during the conversionprivate void evaluateExpression(double[] vals) throws java.lang.Exception
vals
- the values to apply the expression to
java.lang.Exception
- if something goes wrongprivate boolean isOperator(char tok)
tok
- the token to check
private boolean isUnaryFunction(char tok)
tok
- the token to check
private int infixPriority(char opp)
private int stackPriority(char opp)
public java.util.Enumeration listOptions()
listOptions
in interface OptionHandler
public void setOptions(java.lang.String[] options) throws java.lang.Exception
-E expression
Specify the expression to apply. Eg. a1^2*a5/log(a7*4.0).
-N name
Specify a name for the new attribute. Default is to name it with the
expression provided with the -E option.
-D
Debug. Names the attribute with the postfix parse of the expression.
setOptions
in interface OptionHandler
options
- the list of options as an array of strings
java.lang.Exception
- if an option is not supportedpublic java.lang.String[] getOptions()
getOptions
in interface OptionHandler
public java.lang.String nameTipText()
public void setName(java.lang.String name)
name
- the name of the new attributepublic java.lang.String getName()
public java.lang.String debugTipText()
public void setDebug(boolean d)
d
- true if debug mode is to be usedpublic boolean getDebug()
public java.lang.String expressionTipText()
public void setExpression(java.lang.String expr)
expr
- a mathematical expression to applypublic java.lang.String getExpression()
public boolean setInputFormat(Instances instanceInfo) throws java.lang.Exception
setInputFormat
in class Filter
instanceInfo
- an Instances object containing the input instance
structure (any instances contained in the object are ignored - only the
structure is required).
java.lang.Exception
- if the format couldn't be set successfullypublic boolean input(Instance instance) throws java.lang.Exception
input
in class Filter
instance
- the input instance
java.lang.IllegalStateException
- if no input format has been defined.
java.lang.Exception
- if there was a problem during the filtering.public static void main(java.lang.String[] args)
args
- should contain arguments to the filter: use -h for help
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |