🎉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

Add label to existing ExampleSet

User: "radone"
New Altair Community Member
Updated by Jocelyn
Hi,
I have an existing example set. How can I effectively add a label attribute to the existing example set?

ExampleSet newExampleSet = .... (an existing example set);

// ADD LABEL ATTRIBUTE
Attribute label = AttributeFactory.createAttribute("label", Ontology.NOMINAL);
newExampleSet.getAttributes().setLabel(label);

// SET NOMINAL VALUE
Example e = newExampleSet.getExample(0);
e.setLabel(label.getMapping().mapString(clsName));

throws  java.lang.ArrayIndexOutOfBoundsException: -1 on the last line.

SEVERE: Process failed: operator cannot be executed (-1). Check the log messages...
java.lang.ArrayIndexOutOfBoundsException: -1
at com.rapidminer.example.table.DoubleArrayDataRow.set(DoubleArrayDataRow.java:52)
at com.rapidminer.example.table.AbstractAttribute.setValue(AbstractAttribute.java:184)
at com.rapidminer.example.table.DataRow.set(DataRow.java:85)
at com.rapidminer.example.Example.setValue(Example.java:140)
at com.rapidminer.example.Example.setLabel(Example.java:178)
at ... last code of the example above ...
Thanks in advance for any help,
radone

Find more posts tagged with

Sort by:
1 - 4 of 41
    User: "Marco_Boeck"
    New Altair Community Member
    Hi,

    this should work:

    Attribute newAtt = AttributeFactory.createAttribute("label", Ontology.NOMINAL);
    newExampleSet.getExampleTable().addAttribute(newAtt);
    newExampleSet.getAttributes().addRegular(newAtt);
    newExampleSet.getAttributes().setSpecialAttribute(newExampleSet.getAttributes().get("label"), "label");
    There are other ways, but this one should work just fine.

    Regards,
    Marco
    User: "radone"
    New Altair Community Member
    OP
    Thank you for your reply.

    Unfortunately, ended with exactly the same error. I got some debugging info about the just inserted label and it seems that "-1" in my outpput might have something to do with my problem?

    String clsName = "MY_NEW_NOMINAL_CLASS";
    ExampleSet newExampleSet = .... (an existing example set);

    // ADD LABEL ATTRIBUTE
    Attribute label = AttributeFactory.createAttribute("label", Ontology.NOMINAL);
    newExampleSet.getAttributes().setLabel(label);

    System.out.println(newExampleSet.getAttributes().getLabel());

    // SET NOMINAL VALUE
    Example e = newExampleSet.getExample(0);
    e.setLabel(label.getMapping().mapString(clsName));
    the system out gives:
    #-1: label (nominal/single_value)/values=[]
    and the code:

                   Example e = newExampleSet.getExample(0);
    e.setLabel(label.getMapping().mapString(clsName));
    throws:
    SEVERE: Process failed: operator cannot be executed (-1). Check the log messages...
    java.lang.ArrayIndexOutOfBoundsException: -1
    at com.rapidminer.example.table.DoubleArrayDataRow.set(DoubleArrayDataRow.java:52)
    at com.rapidminer.example.table.AbstractAttribute.setValue(AbstractAttribute.java:184)
    at com.rapidminer.example.table.DataRow.set(DataRow.java:85)
    at com.rapidminer.example.Example.setValue(Example.java:140)
    at com.rapidminer.example.Example.setLabel(Example.java:178)
    at .... last code of the example above ....

    User: "Marco_Boeck"
    New Altair Community Member
    Hi,

    I forgot a line in my first reply, so I had to edit it. If you copy that codeblock, you should be fine.
    Note that to be able to use
    newExampleSet.getAttributes().setLabel(label);
    the label attribute must already be present in the attribute set.

    Regards,
    Marco
    User: "radone"
    New Altair Community Member
    OP
    Thank you Marco.

    The line:
    newExampleSet.getExampleTable().addAttribute(newAtt);
    was exactly what I was missing.