🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

Problem with the Execute-Script-Operator

User: "Thrhw31"
New Altair Community Member
Updated by Jocelyn
Hey,

I'm trying to generate an attribute Y in a moving sum from another attribute X:

Y(1) = X(1)

for i = 2 ... length(X) {

Y(i) = X(i) + Y(i-1)

}

The Result should look like this:
X Y
1 1
0 1
0 1
1 2
0 2
I do not found a possibility to do this in Rapidminer and therefore I used the Execute-Script-Operator. Unfortunately I have nearly no experience in Java/Groovy :( The problem with my script is that it overwrites my input attribute X. I would be very grateful if someone have a look on the code below.

Greetings from Germany

import com.rapidminer.example.table.NumericalAttribute;
import com.rapidminer.tools.Ontology;

ExampleSet input= input[0];
Attributes all_attributes = input.getAttributes();
Attribute bool_attrib = all_attributes.get("X");
Attribute target = AttributeFactory.createAttribute("Y", Ontology.INTEGER)

target.setTableIndex(bool_attrib.getTableIndex());
all_attributes.addRegular(target);
ExampleTable bool_tbl = input.getExampleTable();

for (int i = 0; i < bool_tbl.size(); i++) {

DataRow tmp_DataRow = bool_tbl.getDataRow(i);
if (i == 0)
{
tmp_DataRow.set(target, tmp_DataRow.get(bool_attrib));
}

if (i != 0)
{
tmp_DataRow.set(target, tmp_DataRow.get(bool_attrib) + bool_tbl.getDataRow(i-1).get(target));
}
}
return (input);

Find more posts tagged with

Sort by:
1 - 1 of 11
    User: "Marco_Boeck"
    New Altair Community Member
    Accepted Answer

    Hi,

     

    here is your fixed script:

     

    import com.rapidminer.tools.Ontology

    ExampleSet inputExampleSet = input[0];

    Attributes inputAttributes = inputExampleSet.getAttributes();
    Attribute sourceAttribute = inputAttributes.get("ai_description");
    Attribute targetAttribute = AttributeFactory.createAttribute("ai_description_numberOfBulletp", Ontology.INTEGER);

    inputAttributes.addRegular(targetAttribute);
    inputExampleSet.getExampleTable().addAttribute(targetAttribute);

    for (Example actExample : inputExampleSet) {
    int counter = 0;
    String actValue = actExample.getNominalValue(sourceAttribute);
    for( int i=0; i<actValue.length(); i++ ) {
    if(actValue.charAt(i) == '•') {
    counter++;
    }

    }
    actExample.setValue(targetAttribute, counter);
    }

    return(inputExampleSet);

    You just need to call "inputExampleSet.getExampleTable().addAttribute(targetAttribute);" after adding a new attribute to the Attributes.

     

    Regards,

    Marco