Как определить новый формат exampleSetOutPut?

При создании нового оператора мы создаем входной порт для получения данных и выходной порт для доставки данных. Для каждого входного порта мы фиксируем его тип данных, например:

 exampleSetInput.addPrecondition (
     new ExampleSetPrecondition (
         exampleSetInput,
         Ontology.ATTRIBUTE_VALUE));

А также мы определяем тип данных порта вывода, например:

getTransformer().addPassThroughRule (
    exampleSetInput, exampleSetOutput);

Это условие будет генерировать тот же тип и формат выходных данных, что и входные. Мой вопрос заключается в том, как определить новый формат вывода и тип данных без связи с вводом. Например, входной формат имеет числовой тип данных и четыре атрибута, я хочу, чтобы выходные данные были типа String и с новыми двумя атрибутами.


person One Day    schedule 20.02.2013    source источник


Ответы (1)


Что ж, я нахожу решение в доставленном документе сообществом рапид-майнеров «Как расширить Rapidminer». Он заключается в использовании следующей функции в конструкторе при определении правил портов:

getTransformer().addRule(new ExampleSetPassThroughRule(exampleSetInput, exampleSetOutPut,    SetRelation.SUBSET) {
        @Override
        public ExampleSetMetaData modifyExampleSet(ExampleSetMetaData metaData) throws UndefinedParameterError {
            metaData.removeAllAttributes();//This will remove all input attribtes
            metaData.addAttribute(new AttributeMetaData("item", Ontology.STRING));//here the creation of new attribute 

            return metaData;
        }
    });

Также вы можете изменить имена или типы входных атрибутов по своему усмотрению.

person One Day    schedule 24.02.2013