2015-07-22 4 views
0

Я только начал работать с RapidMiner, и я ищу способ для итерации атрибута throughone, выделения определенного целочисленного значения и для каждой итерации, запускающей создание новых вставок на основе на целочисленное значение.RapidMiner: Loop для атрибута для извлечения значения и триггера другого цикла

Я думал, что можно использовать задачу «Целочисленные значения». В подпроцессе я использовал бы конкретное значение итерации, а затем инициировал генерацию нового набора данных. Но значения Loop Values, похоже, работают только с номинальными значениями.

Кроме того, как можно определить количество итераций (например, для функции Loop), используя текущее значение атрибута?

Любая идея?

Update1:

Примеры петель, кажется, правильный выбор для меня на первом этапе, поскольку цикл Значение проверок, сколько различных значений конкретного атрибута существует.

Обновление2:

Часть с петлями:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<process version="5.3.013"> 
<context> 
<input/> 
<output/> 
<macros/> 
</context> 
<operator activated="true" class="process" compatibility="5.3.013" expanded="true" name="Process"> 
<parameter key="resultfile" value="/home/test.res"/> 
<process expanded="true"> 
    <operator activated="true" breakpoints="after" class="read_excel" compatibility="5.3.013" expanded="true" height="60" name="Read Excel" width="90" x="1586" y="615"> 
    <parameter key="excel_file" value="D:\stack.xlsx"/> 
    <list key="annotations"/> 
    <list key="data_set_meta_data_information"/> 
    </operator> 
    <operator activated="true" breakpoints="after" class="loop_examples" compatibility="5.3.013" expanded="true" height="76" name="Loop Examples" width="90" x="1921" y="615"> 
    <process expanded="true"> 
     <operator activated="true" breakpoints="after" class="extract_macro" compatibility="5.3.013" expanded="true" height="60" name="Extract Macro" width="90" x="112" y="30"> 
     <parameter key="macro" value="macro_value"/> 
     <parameter key="macro_type" value="data_value"/> 
     <parameter key="attribute_name" value="att9"/> 
     <parameter key="example_index" value="1"/> 
     <list key="additional_macros"/> 
     </operator> 
     <operator activated="true" breakpoints="after" class="loop" compatibility="5.3.013" expanded="true" height="76" name="Loop (2)" width="90" x="380" y="30"> 
     <parameter key="set_iteration_macro" value="true"/> 
     <parameter key="iterations" value="%{macro_value}"/> 
     <process expanded="true"> 
      <operator activated="true" breakpoints="after" class="generate_data_user_specification" compatibility="5.3.013" expanded="true" height="60" name="Generate Data by User Specification (2)" width="90" x="45" y="300"> 
      <list key="attribute_values"> 
       <parameter key="person_type_id" value="3"/> 
      </list> 
      <list key="set_additional_roles"/> 
      </operator> 
      <operator activated="true" breakpoints="after" class="select_attributes" compatibility="5.3.013" expanded="true" height="76" name="Select Attributes (8)" width="90" x="112" y="120"> 
      <parameter key="attribute_filter_type" value="subset"/> 
      <parameter key="attributes" value="id|temp_id||att9"/> 
      </operator> 
      <operator activated="true" breakpoints="after" class="join" compatibility="5.3.013" expanded="true" height="76" name="Join (5)" width="90" x="246" y="255"> 
      <parameter key="use_id_attribute_as_key" value="false"/> 
      <list key="key_attributes"/> 
      </operator> 
      <operator activated="true" breakpoints="after" class="select_attributes" compatibility="5.3.013" expanded="true" height="76" name="Select Attributes (7)" width="90" x="447" y="255"> 
      <parameter key="attribute_filter_type" value="subset"/> 
      <parameter key="attributes" value="id|person_type_id|temp_id|att9"/> 
      </operator> 
      <connect from_port="input 1" to_op="Select Attributes (8)" to_port="example set input"/> 
      <connect from_op="Generate Data by User Specification (2)" from_port="output" to_op="Join (5)" to_port="right"/> 
      <connect from_op="Select Attributes (8)" from_port="example set output" to_op="Join (5)" to_port="left"/> 
      <connect from_op="Join (5)" from_port="join" to_op="Select Attributes (7)" to_port="example set input"/> 
      <connect from_op="Select Attributes (7)" from_port="example set output" to_port="output 1"/> 
      <portSpacing port="source_input 1" spacing="0"/> 
      <portSpacing port="source_input 2" spacing="0"/> 
      <portSpacing port="sink_output 1" spacing="0"/> 
      <portSpacing port="sink_output 2" spacing="0"/> 
     </process> 
     </operator> 
     <operator activated="true" breakpoints="after" class="append" compatibility="5.3.013" expanded="true" height="76" name="Append" width="90" x="648" y="30"/> 
     <connect from_port="example set" to_op="Extract Macro" to_port="example set"/> 
     <connect from_op="Extract Macro" from_port="example set" to_op="Loop (2)" to_port="input 1"/> 
     <connect from_op="Loop (2)" from_port="output 1" to_op="Append" to_port="example set 1"/> 
     <connect from_op="Append" from_port="merged set" to_port="example set"/> 
     <portSpacing port="source_example set" spacing="0"/> 
     <portSpacing port="sink_example set" spacing="0"/> 
     <portSpacing port="sink_output 1" spacing="0"/> 
    </process> 
    </operator> 
    <operator activated="true" breakpoints="after" class="write_csv" compatibility="5.3.013" expanded="true" height="76" name="writePersonref" width="90" x="2055" y="615"> 
    <parameter key="csv_file" value="/home/result.csv"/> 
    </operator> 
    <connect from_op="Read Excel" from_port="output" to_op="Loop Examples" to_port="example set"/> 
    <connect from_op="Loop Examples" from_port="example set" to_op="writePersonref" to_port="input"/> 
    <portSpacing port="source_input 1" spacing="0"/> 
    <portSpacing port="sink_result 1" spacing="0"/> 
</process> 

Данные испытаний содержит только 2 строки: Первая строка: идентификатор = 1, att9 = 2, temp_id = 2; Второй ряд: id = 2, att9 = 1, temp_id = 4

Правильный результат должен содержать 3 строки: Первая строка: id = 1, att9 = 2, temp_id = 2, person_type_id = 3; Вторая строка: id = 1, att9 = 2, temp_id = 2, person_type_id = 3; Третья строка: id = 2, att9 = 1, temp_id = 2, person_type_id = 3.

Благодаря

+0

К сожалению, XML не импортирует. Можете ли вы переделать? – awchisholm

+0

Отсутствует с конца XML. – awchisholm

ответ

0

Вы можете конвертировать целые числа до номинальных значений с помощью оператора Numerical to Polynominal. Оператор Loop Values будет работать нормально. Если вам понадобится целочисленное значение внутри цикла, моим советом будет создание нового атрибута (используйте Generate Attributes), который является копией исходного целого числа, преобразуйте его в полином и используйте для управления оператором Loop Values.

+0

Спасибо за ваш комментарий. Или есть ли другой способ моделирования моего варианта использования? Как работать внутри подпроцесса с каждым значением одного атрибута на каждой итерации? Мне нужно значение каждой итерации для создания нового набора данных. Если текущее значение итерации равно 3, мне нужно создать три строки в моем сгенерированном наборе данных. Кроме того, мне нужно вставить исходное значение внешнего ключа в этот новый сгенерированный набор данных. – Tron

+0

Текущее значение будет содержаться в макросе (имя по умолчанию - 'loop_value'). Вы можете использовать это для управления созданием нового набора примеров. Самый простой способ, который я могу придумать, - использовать оператор «Loop» с его параметром итераций, установленным в макрос «loop_value». Внутри этого оператора сгенерируйте одну строку для данных, которые вы хотите (например, попробуйте «Генерировать данные по пользовательской спецификации»). Выход из оператора «Loop» представляет собой набор отдельных строк, с которыми вы можете объединиться, используя оператор «Append». – awchisholm

+0

Спасибо. Есть ли также возможность генерировать новый набор данных с использованием значения исходного набора данных? % {значение} ist не работает для «Генерировать данные по пользовательской спецификации». – Tron

0

Я внесла некоторые изменения.

  • Извлечение значения для управления Loop с помощью макроса от оператора Loop Examples
  • фильтра оригинального примера установлен включать только одну строку, чтобы присоединиться к сгенерированной примеру установить
  • Выходных оригинального пример установленного из оператора Loop Examples (это необходимо, иначе петля пойдет не так)
  • Переместить Append за пределами оператора Loop Examples

Вот этот процесс.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<process version="5.3.015"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="5.3.015" expanded="true" name="Process"> 
    <parameter key="resultfile" value="/home/test.res"/> 
    <process expanded="true"> 
     <operator activated="true" class="read_excel" compatibility="5.3.015" expanded="true" height="60" name="Read Excel" width="90" x="45" y="75"> 
    <parameter key="excel_file" value="D:\stack.xlsx"/> 
    <list key="annotations"/> 
    <list key="data_set_meta_data_information"/> 
     </operator> 
     <operator activated="true" class="loop_examples" compatibility="5.3.015" expanded="true" height="94" name="Loop Examples" width="90" x="246" y="75"> 
    <process expanded="true"> 
     <operator activated="true" class="multiply" compatibility="5.3.015" expanded="true" height="94" name="Multiply" width="90" x="45" y="30"/> 
     <operator activated="true" class="extract_macro" compatibility="5.3.015" expanded="true" height="60" name="Extract Macro" width="90" x="45" y="165"> 
     <parameter key="macro" value="macro_value"/> 
     <parameter key="macro_type" value="data_value"/> 
     <parameter key="attribute_name" value="att9"/> 
     <parameter key="example_index" value="%{example}"/> 
     <list key="additional_macros"/> 
     </operator> 
     <operator activated="true" class="filter_example_range" compatibility="5.3.015" expanded="true" height="76" name="Filter Example Range (2)" width="90" x="45" y="255"> 
     <parameter key="first_example" value="%{example}"/> 
     <parameter key="last_example" value="%{example}"/> 
     </operator> 
     <operator activated="true" class="loop" compatibility="5.3.015" expanded="true" height="76" name="Loop (2)" width="90" x="179" y="165"> 
     <parameter key="set_iteration_macro" value="true"/> 
     <parameter key="iterations" value="%{macro_value}"/> 
     <process expanded="true"> 
      <operator activated="true" class="generate_data_user_specification" compatibility="5.3.015" expanded="true" height="60" name="Generate Data by User Specification (2)" width="90" x="112" y="300"> 
     <list key="attribute_values"> 
      <parameter key="person_type_id" value="3"/> 
     </list> 
     <list key="set_additional_roles"/> 
      </operator> 
      <operator activated="false" breakpoints="after" class="select_attributes" compatibility="5.3.015" expanded="true" height="76" name="Select Attributes (8)" width="90" x="179" y="30"> 
     <parameter key="attribute_filter_type" value="subset"/> 
     <parameter key="attributes" value="id|temp_id||att9"/> 
      </operator> 
      <operator activated="true" class="join" compatibility="5.3.015" expanded="true" height="76" name="Join (5)" width="90" x="246" y="210"> 
     <parameter key="use_id_attribute_as_key" value="false"/> 
     <list key="key_attributes"/> 
      </operator> 
      <operator activated="false" class="select_attributes" compatibility="5.3.015" expanded="true" height="76" name="Select Attributes (7)" width="90" x="447" y="300"> 
     <parameter key="attribute_filter_type" value="subset"/> 
     <parameter key="attributes" value="id|person_type_id|temp_id|att9"/> 
      </operator> 
      <connect from_port="input 1" to_op="Join (5)" to_port="left"/> 
      <connect from_op="Generate Data by User Specification (2)" from_port="output" to_op="Join (5)" to_port="right"/> 
      <connect from_op="Join (5)" from_port="join" to_port="output 1"/> 
      <portSpacing port="source_input 1" spacing="0"/> 
      <portSpacing port="source_input 2" spacing="0"/> 
      <portSpacing port="sink_output 1" spacing="0"/> 
      <portSpacing port="sink_output 2" spacing="0"/> 
     </process> 
     </operator> 
     <connect from_port="example set" to_op="Multiply" to_port="input"/> 
     <connect from_op="Multiply" from_port="output 1" to_port="example set"/> 
     <connect from_op="Multiply" from_port="output 2" to_op="Extract Macro" to_port="example set"/> 
     <connect from_op="Extract Macro" from_port="example set" to_op="Filter Example Range (2)" to_port="example set input"/> 
     <connect from_op="Filter Example Range (2)" from_port="example set output" to_op="Loop (2)" to_port="input 1"/> 
     <connect from_op="Loop (2)" from_port="output 1" to_port="output 1"/> 
     <portSpacing port="source_example set" spacing="0"/> 
     <portSpacing port="sink_example set" spacing="0"/> 
     <portSpacing port="sink_output 1" spacing="0"/> 
     <portSpacing port="sink_output 2" spacing="0"/> 
    </process> 
     </operator> 
     <operator activated="true" class="append" compatibility="5.3.015" expanded="true" height="76" name="Append" width="90" x="380" y="120"/> 
     <operator activated="true" class="write_csv" compatibility="5.3.015" expanded="true" height="76" name="writePersonref" width="90" x="514" y="165"> 
    <parameter key="csv_file" value="/home/result.csv"/> 
     </operator> 
     <connect from_op="Read Excel" from_port="output" to_op="Loop Examples" to_port="example set"/> 
     <connect from_op="Loop Examples" from_port="example set" to_port="result 1"/> 
     <connect from_op="Loop Examples" from_port="output 1" to_op="Append" to_port="example set 1"/> 
     <connect from_op="Append" from_port="merged set" to_op="writePersonref" to_port="input"/> 
     <portSpacing port="source_input 1" spacing="0"/> 
     <portSpacing port="sink_result 1" spacing="0"/> 
     <portSpacing port="sink_result 2" spacing="0"/> 
    </process> 
    </operator> 
</process> 
+0

Спасибо за вашу помощь, и я извиняюсь за мой поздний ответ. Хотя, наконец, я сам выясню, но, вероятно, только из-за вашей поддержки. ;-) – Tron

+0

Возможно, вы могли бы принять ответ, если бы это помогло? – awchisholm

 Смежные вопросы

  • Нет связанных вопросов^_^