Ejemplo 26: Cálculos Basados en Grupos

Este proceso muestra un preprocesamiento más complejo que demuestra algunas de las funcionalidades de ETL extendidas disponibles en RapidMiner mediante el uso de conceptos tales como bucles o macros.

La primera cadena de operadores sólo encapsula una secuencia de operadores que producen datos en un formato específico. Posteriormente, el ValueIterator itera sobre todos los valores posibles del atributo
especificado, y almacena el valor actual en la macro %{loop_value}. Esta macro se utiliza luego dentro del ExampleFilter seguido por una agregación para calcular la media de otro atributo de acuerdo a los grupos
definidos por el primero. Luego se utiliza otra definición de macro, %{current_average}, para leer la media y posteriormente se la emplea en el AttributeConstruction. A continuación, todos los conjuntos de datos
resultantes, uno por cada grupo, se fusionarán al finalizar el bucle.

1. Agregar el operador Utility → Subprocess a la zona de trabajo. Cambiar el nombre del mismo a “GenerarDatos”.

2. Agregar el operador Process Control → Loop → Loop Values. Cambiar el nombre del mismo a “IteradorValores”. Conectar la salida out del operador GeneradorDatos (Subprocess) a la entrada exa de este operador.

3. Agregar el operador Data Transformation → Set Operations → Append. Cambiar el nombre del mismo a “CombinarConjEjs”. Conectar la salida out del operador IteradorValores (Loop Values) a la entrada exa de este operador y la salida mer (merged set) de este último al conector res del panel.

 

 

4. Hacer doble clic sobre el operador GenerarDatos (Subprocess). En el panel Nested Chain del nivel inferior, agregar los siguientes operadores:

4.1 Agregar el operador Utility → Data Generation → Generate Data a la zona de trabajo. Cambiar el nombre del mismo a “GeneradorConjEjs” y los valores de los parámetros target function a “sum”, number
examples
a 12, y number of attributes a 2.

4.2 Agregar el operador Data Transformation → Attribute Set Reduction and Transformation → Selection → Select Attributes. Cambiar el nombre del mismo a “FiltroAtributos”. Conectar la salida out del operador GeneradorConjEjs (Generate Data) a la entrada exa de este operador y cambiar los valores de los parámetros attribute filter type a “regular_expression” y regular expresion a “label”, este último con ayuda del editor de expresiones regulares. Además tildar las opciones invert selection e include special attributes.

4.3 Agregar el operador Data Transformation → Attribute Set Reduction and Transformation → Selection → Work on Subset. Cambiar el nombre del mismo a “PreProcSubConjAtrib”. Conectar la salida exa del operador FiltroAtributos (Select Attributes) a la entrada exa de este operador y cambiar los valores de los parámetros attribute filetr type a “regular_expression” y regular expresion a “att1”, este último con ayuda del editor de expresiones regulares.

4.4 Agregar el operador Data Transformation → Sorting → Sort. Cambiar el nombre del mismo a “Ordenar”. Conectar la salida exa del operador PreProcSubConjAtrib (Work on Subset) a la entrada exa de este operador y la salida exa de este último al conector out del panel. Seleccionar “att1” de la lista de valores para el parámetro attribute name.

 

 

 

5. Hacer doble clic sobre el operador PreProcSubConjAtrib. En el panel Subset Process del nivel inferior, agregar el siguiente operador:

5.1 Data Transformation → Type Conversion → Discretization → Discretize by Frequency. Cambiar el nombre del mismo a “DiscretizaciónFrecuencias”. Conectar la entrada y salida exa de este operador a los conectores de entrada y salida exa del panel, respectivamente. Cambiar los valores de los parámetros number of bins a 2 y range name type (modo experto) a “short”.

 

 

6. Volver al proceso principal y hacer doble clic sobre el operador IteradorValores (Loop Values). En el panel Iteration del nivel inferior, agregar los siguientes operadores:

6.1 Data Transformation → Filtering → Filter Examples. Cambiar el nombre del mismo a “FiltroMuestras”. Conectar la entrada exa del panel a la entrada exa de este operador. Cambiar los valores de los parámetros condition class a “attribute_value_filter”, parameter string a “att1 = %{loop_value}”.

6.2 Data Transformation → Aggregation → Aggregate. Cambiar el nombre del mismo a “Agregación”. Conectar la entrada exa del operador FiltroMuestras (Filter Examples) a la entrada exa de este operador. Con la ayuda del editor de lista (Edit List) del parámetros aggregation attributes añadir: | att2 | average |.

6.3 Utility → Macros → Extract Macro. Cambiar el nombre del mismo a “DefiniciónMacroDatos”. Conectar la salida exa del operador Agregación (Aggregate) a la entrada exa de este operador y asignar valores a los parámetros macro = “current_average”, macro type = “data value”, attribute name = “average(att2)” y example index = 1. 

6.4 Data Transformation → Attribute Set Reduction and Transformation → Generation → Generate Attributes. Cambiar el nombre del mismo a “ConstrucciónAtributos”. Conectar la salida ori (original) del operador Agregación (Aggregate) a la entrada exa de este operador y la salida exa de este último al conector out del panel. Con la ayuda del editor de lista (Edit List) del parámetro function descriptions añadir: | att2_avs_avg | abs(att2 - %{current_average}) |

 

 

7. Volver al proceso principal y seleccionar el operador IteradorValores (Loop Values). Seleccionar “att1” de la lista de valores para el parámetro attribute.