|  | ## Generate Attributes

#### Synopsis

This operator constructs new user defined attributes from mathematical expressions.

#### Description

This operator constructs new attributes from the attributes of the input ExampleSet and arbitrary constants. The names of the new attributes and their construction description are defined in the parameter functions. The attribute names might be used as variables in the construction description. When the descriptions are evaluated on each single example during application of this operator, these variables will be filled with the example's attribute weights.

Please note that there are some restrictions for the attribute names in order to let this operator work properly:

- Attribute names containing parentheses are not allowed.
- Attribute names containing blanks are not allowed
- Attribute names with function or operator names are also not allowed.
- If the standard constants (see below) are usable, attribute names with names like "e" or "pi" are not allowed.

If these conditions are not fulfilled, the names must be changed beforehand, for example with the Rename operator. When replacing several attributes following a certain schema, the Rename by Replacing migth prove useful.

#### Supported Expressions

The following operations are supported:

- Addition: +
- Subtraction: -
- Multiplication: *
- Division: /
- Power: ^
- Modulus: %
- Less Than: <
- Greater Than: >
- Less or Equal: <=
- More or Equal: >=
- Equal: ==
- Not Equal: !=
- Boolean Not: !
- Boolean And: two ampers and
- Boolean Or: ||

The following log and exponential functions are supported:

- Natural Logarithm: ln(x)
- Logarithm Base 10: log(x)
- Logarithm Dualis (Base 2): ld(x)
- Exponential (e^x): exp(x)
- Power: pow(x,y)

The following trigonometric functions are supported:

- Sine: sin(x)
- Cosine: cos(x)
- Tangent: tan(x)
- Arc Sine: asin(x)
- Arc Cosine: acos(x)
- Arc Tangent: atan(x)
- Arc Tangent (with 2 parameters): atan2(x,y)
- Hyperbolic Sine: sinh(x)
- Hyperbolic Cosine: cosh(x)
- Hyperbolic Tangent: tanh(x)
- Inverse Hyperbolic Sine: asinh(x)
- Inverse Hyperbolic Cosine: acosh(x)
- Inverse Hyperbolic Tangent: atanh(x)

The following statistical functions are supported:

- Round: round(x)
- Round to p decimals: round(x,p)
- Floor: floor(x)
- Ceiling: ceil(x)
- Average: avg(x,y,z...)
- Minimum: min(x,y,z...)
- Maximum: max(x,y,z...)

The following miscellaneous functions are supported:

- If-Then-Else: if(cond,true-evaluation, false-evaluation)
- Absolute: abs(x)
- Square Root: sqrt(x)
- Signum (delivers the sign of a number): sgn(x)
- Random Number (between 0 and 1): rand()
- Modulus (x % y): mod(x,y)
- Sum of k Numbers: sum(x,y,z...)
- Binomial Coefficients: binom(n, i)
- Number to String: str(x)
- String to Number: parse(x)
- Substring: cut(x, start, len)

The following process related functions are supported:

- Retrieving a parameter value: param("operator", "parameter")

Beside attributes and those operations and functions mentioned above, this operator also supports the constants pi and e if this is indicated by the corresponding parameter use standard constants (default: true). You can also use strings in formulas (for example in a conditioned if-formula) but the string values have to be enclosed in double quotes (").

#### Examples

a1+sin(a2*a3) if (att1>5, att2*att3,-abs(att1)) </p>

#### Input

- example set input: expects: ExampleSetMetaData: #examples: = 0; #attributes: 0

#### Output

- example set output:
- original:

#### Parameters

- function descriptions: List of functions to generate.
- use standard constants: Indicates if standard constants like e or pi should be available.
- keep all: If set to true, all the original attributes are kept, otherwise they are removed from the example set.

#### ExampleProcess