package shared.reader; import java.util.ArrayList; import java.util.Arrays; import shared.DataSet; import shared.Instance; /** * Separates Labels into Binary representation for better use in Neural Networks * @author Alex Linton <https://github.com/lexlinton> * @date 2013-03-05 */ public class DataSetLabelBinarySeperator { public static void seperateLabels(DataSet set){ int numberOfLabels = 0; ArrayList<Integer> labels = new ArrayList<Integer>(); //count up the number of distinct labels for(int i = 0; i < set.size(); i++){ if(!labels.contains(new Integer(set.getInstances()[i].getLabel().getDiscrete()))){ numberOfLabels++; labels.add(new Integer(set.getInstances()[i].getLabel().getDiscrete())); } } double[] values = new double[numberOfLabels]; for(int i = 0; i < values.length; i++){ values[i] = 0; } for(int i = 0; i < set.size(); i++){ int labelValue = set.getInstances()[i].getLabel().getDiscrete()%values.length; values[labelValue] = 1; Instance instance = new Instance(Arrays.copyOf(values, values.length)); set.get(i).setLabel(instance); values[labelValue] = 0; } } }