Add label to existing ExampleSet
radone
New Altair Community Member
Hi,
I have an existing example set. How can I effectively add a label attribute to the existing example set?
radone
I have an existing example set. How can I effectively add a label attribute to the existing example set?
throws java.lang.ArrayIndexOutOfBoundsException: -1 on the last line.
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));
Thanks in advance for any help,
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 ...
radone
0
Answers
-
Hi,
this should work:
There are other ways, but this one should work just fine.
Attribute newAtt = AttributeFactory.createAttribute("label", Ontology.NOMINAL);
newExampleSet.getExampleTable().addAttribute(newAtt);
newExampleSet.getAttributes().addRegular(newAtt);
newExampleSet.getAttributes().setSpecialAttribute(newExampleSet.getAttributes().get("label"), "label");
Regards,
Marco0 -
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?
the system out gives:
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));#-1: label (nominal/single_value)/values=[]
and the code:
throws:
Example e = newExampleSet.getExample(0);
e.setLabel(label.getMapping().mapString(clsName));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 ....0 -
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 usenewExampleSet.getAttributes().setLabel(label);
the label attribute must already be present in the attribute set.
Regards,
Marco0 -
Thank you Marco.
The line:newExampleSet.getExampleTable().addAttribute(newAtt);
was exactly what I was missing.0