package shared.filt; import shared.DataSet; import shared.DataSetDescription; import shared.Instance; import util.linalg.Vector; /** * A filter that splits a data set into * data and labels * @author Andrew Guillory gtg008g@mail.gatech.edu * @version 1.0 */ public class LabelSplitFilter implements DataSetFilter { /** * The size of the data */ private int labelCount; /** * Make a new label data split filter * @param labelCount the number of label items */ public LabelSplitFilter(int labelCount) { this.labelCount = labelCount; } /** * Make a new label split filter */ public LabelSplitFilter() { this(1); } /** * @see shared.filt.DataSetFilter#filter(shared.DataSet) */ public void filter(DataSet dataSet) { int dataCount = dataSet.get(0).size() - labelCount; for (int i = 0; i < dataSet.size(); i++) { Instance instance = dataSet.get(i); Vector input = instance.getData().get(0, dataCount); Vector output = instance.getData().get(dataCount, instance.getData().size()); instance.setData(input); instance.setLabel(new Instance(output)); } dataSet.setDescription(new DataSetDescription(dataSet)); } }