package edu.cmu.minorthird.classify.multi; import edu.cmu.minorthird.classify.ClassLabel; import edu.cmu.minorthird.classify.Example; import edu.cmu.minorthird.classify.Instance; import edu.cmu.minorthird.util.gui.Viewer; /** * An instance that is associated with a ClassLabel. Implements the Instance * interface by delegating to a wrapped Instance, so subclasses just need to * attach the right label construct. * * @author Cameron Williams */ public class MultiExample extends Example{ static final long serialVersionUID=20080125L; // overwrites Example.label protected MultiClassLabel label; public MultiExample(Instance instance,MultiClassLabel label,double weight){ super(instance,null,weight); this.label=label; } public MultiExample(Instance instance,MultiClassLabel label){ this(instance,label,1.0); } /** Returns the first label */ @Override public ClassLabel getLabel(){ return label.getLabels()[0]; } /** get the label associated with the underlying object */ public MultiClassLabel getMultiLabel(){ return label; } /** Returns this MultiExample as separate Example's */ public Example[] getExamples(){ ClassLabel[] labels=label.getLabels(); Example[] examples=new Example[labels.length]; for(int i=0;i<examples.length;i++){ examples[i]=new Example(instance,labels[i],weight); } return examples; } /** Create a viewer */ @Override public Viewer toGUI(){ return new GUI.MultiExampleViewer(this); } }