List of usage examples for weka.core Instance numAttributes
public int numAttributes();
From source file:mulan.transformations.BinaryRelevanceTransformation.java
License:Open Source License
/** * Remove all label attributes except labelToKeep * @param instance // www .j a v a2 s .c o m * @param labelToKeep * @return transformed Instance */ public Instance transformInstance(Instance instance, int labelToKeep) { Instance newInstance = DataUtils.createInstance(instance, instance.numAttributes()); newInstance.setDataset(null); int numPredictors = instance.numAttributes() - numOfLabels; int skipLabel = 0; for (int labelIndex = 0; labelIndex < numOfLabels; labelIndex++) { if (labelIndex == labelToKeep) { skipLabel++; continue; } newInstance.deleteAttributeAt(numPredictors + skipLabel); } return newInstance; }
From source file:mulan.transformations.IncludeLabelsTransformation.java
License:Open Source License
/** * * @param mlData multi-label data//from w ww . j a v a 2s.c om * @return transformed instances * @throws Exception Potential exception thrown. To be handled in an upper level. */ public Instances transformInstances(MultiLabelInstances mlData) throws Exception { int numLabels = mlData.getNumLabels(); labelIndices = mlData.getLabelIndices(); // remove all labels Instances transformed = RemoveAllLabels.transformInstances(mlData); // add at the end an attribute with values the label names ArrayList<String> labelNames = new ArrayList<String>(numLabels); for (int counter = 0; counter < numLabels; counter++) { labelNames.add(mlData.getDataSet().attribute(labelIndices[counter]).name()); } Attribute attrLabel = new Attribute("Label", labelNames); transformed.insertAttributeAt(attrLabel, transformed.numAttributes()); // and at the end a binary attribute ArrayList<String> binaryValues = new ArrayList<String>(2); binaryValues.add("0"); binaryValues.add("1"); Attribute classAttr = new Attribute("Class", binaryValues); transformed.insertAttributeAt(classAttr, transformed.numAttributes()); // add instances transformed = new Instances(transformed, 0); transformed.setClassIndex(transformed.numAttributes() - 1); Instances data = mlData.getDataSet(); for (int instanceIndex = 0; instanceIndex < data.numInstances(); instanceIndex++) { for (int labelCounter = 0; labelCounter < numLabels; labelCounter++) { Instance temp; temp = RemoveAllLabels.transformInstance(data.instance(instanceIndex), labelIndices); temp.setDataset(null); temp.insertAttributeAt(temp.numAttributes()); temp.insertAttributeAt(temp.numAttributes()); temp.setDataset(transformed); temp.setValue(temp.numAttributes() - 2, (String) labelNames.get(labelCounter)); if (data.attribute(labelIndices[labelCounter]) .value((int) data.instance(instanceIndex).value(labelIndices[labelCounter])).equals("1")) { temp.setValue(temp.numAttributes() - 1, "1"); } else { temp.setValue(temp.numAttributes() - 1, "0"); } transformed.add(temp); } } return transformed; }
From source file:mulan.transformations.IncludeLabelsTransformation.java
License:Open Source License
/** * Transform an unlabeled instance to the format expected by * the binary classifier//from w ww . ja v a2s . c o m * * @param instance an unlabeled instance * @return a transformed unlabeled instance * @throws Exception Potential exception thrown. To be handled in an upper level. */ public Instance transformInstance(Instance instance) throws Exception { if (labelIndices == null) { System.out.println("Label Indices not set!!"); return null; } Instance transformedInstance = RemoveAllLabels.transformInstance(instance, labelIndices); transformedInstance.setDataset(null); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); return transformedInstance; }
From source file:mulan.transformations.LabelPowersetTransformation.java
License:Open Source License
public Instance transformInstance(Instance instance, int[] labelIndices) throws Exception { Instance transformedInstance = RemoveAllLabels.transformInstance(instance, labelIndices); transformedInstance.setDataset(null); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); transformedInstance.setDataset(transformedFormat); return transformedInstance; }
From source file:mulan.transformations.multiclass.Copy.java
License:Open Source License
/** * Transforms a multi-label instance to a list of single-label instances, * one for each of the labels that annotate the instance, by copying the * feature vector//w w w . j a v a2s. c om * * @param instance a multi-label instance * @return a list with the transformed single-label instances */ List<Instance> transformInstance(Instance instance) { List<Instance> result = new ArrayList<Instance>(); for (int counter = 0; counter < numOfLabels; counter++) { if (instance.attribute(labelIndices[counter]).value((int) instance.value(labelIndices[counter])) .equals("1")) { Instance transformed = null; try { transformed = RemoveAllLabels.transformInstance(instance, labelIndices); transformed.setDataset(null); transformed.insertAttributeAt(transformed.numAttributes()); transformed.setValue(transformed.numAttributes() - 1, counter); } catch (Exception ex) { Logger.getLogger(Copy.class.getName()).log(Level.SEVERE, null, ex); } result.add(transformed); } } return result; }
From source file:mulan.transformations.multiclass.Ignore.java
License:Open Source License
/** * Transforms a multi-label example with a single annotation to a * single-label example and ignores multi-label example with more * annotations//from ww w . j av a 2s. c o m * * @param instance a multi-label example * @return a list that is either empty or contains the transformed * single-label example */ List<Instance> transformInstance(Instance instance) { List<Instance> result = new ArrayList<Instance>(); int indexOfSingleLabel = -1; int counter = 0; for (int labelCounter = 0; labelCounter < numOfLabels; labelCounter++) { int index = labelIndices[labelCounter]; if (instance.attribute(index).value((int) instance.value(index)).equals("1")) { counter++; indexOfSingleLabel = labelCounter; } if (counter > 1) { break; } } if (counter > 1 || counter == 0) { return result; } Instance transformedInstance; try { transformedInstance = RemoveAllLabels.transformInstance(instance, labelIndices); transformedInstance.setDataset(null); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); transformedInstance.setValue(transformedInstance.numAttributes() - 1, indexOfSingleLabel); result.add(transformedInstance); } catch (Exception ex) { Logger.getLogger(Ignore.class.getName()).log(Level.SEVERE, null, ex); } return result; }
From source file:mulan.transformations.multiclass.SelectBasedOnFrequency.java
License:Open Source License
/** * Transforms a multi-label example to a list containing a single-label * multi-class example by selecting the most/least frequent label in the * training set/* ww w.j ava 2s . c o m*/ * * @param instance * @return */ List<Instance> transformInstance(Instance instance) { int value = labelOccurance[0]; int labelSelected = 0; for (int counter = 1; counter < numOfLabels; counter++) { if (instance.attribute(labelIndices[counter]).value((int) instance.value(labelIndices[counter])) .equals("1")) { boolean test = false; switch (type) { case MIN: test = labelOccurance[counter] < value ? true : false; break; case MAX: test = labelOccurance[counter] > value ? true : false; break; } if (test) { value = labelOccurance[counter]; labelSelected = counter; } } } Instance transformed = null; try { transformed = RemoveAllLabels.transformInstance(instance, labelIndices); transformed.setDataset(null); transformed.insertAttributeAt(transformed.numAttributes()); transformed.setValue(transformed.numAttributes() - 1, labelSelected); } catch (Exception ex) { Logger.getLogger(Copy.class.getName()).log(Level.SEVERE, null, ex); } List<Instance> result = new ArrayList<Instance>(); result.add(transformed); return result; }
From source file:mulan.transformations.multiclass.SelectRandom.java
License:Open Source License
/** * Transforms a multi-label example to a list containing a single-label * multi-class example by randomly selecting one of the labels * /*from w w w.jav a 2 s . c o m*/ * @param instance the multi-label example * @return the list with the single-label multi-class example */ List<Instance> transformInstance(Instance instance) { ArrayList<Integer> labels = new ArrayList<Integer>(); for (int counter = 0; counter < numOfLabels; counter++) { if (instance.attribute(labelIndices[counter]).value((int) instance.value(labelIndices[counter])) .equals("1")) { labels.add(counter); } } int randomLabel = labels.get((int) (Math.random() * labels.size())); Instance transformed = null; try { transformed = RemoveAllLabels.transformInstance(instance, labelIndices); transformed.setDataset(null); transformed.insertAttributeAt(transformed.numAttributes()); transformed.setValue(transformed.numAttributes() - 1, randomLabel); } catch (Exception ex) { Logger.getLogger(Copy.class.getName()).log(Level.SEVERE, null, ex); } List<Instance> result = new ArrayList<Instance>(); result.add(transformed); return result; }
From source file:mulan.transformations.PT6Transformation.java
License:Open Source License
public Instances transformInstances(MultiLabelInstances mlData) throws Exception { int numLabels = mlData.getNumLabels(); labelIndices = mlData.getLabelIndices(); // remove all labels Instances transformed = RemoveAllLabels.transformInstances(mlData); // add at the end an attribute with values the label names ArrayList<String> labelNames = new ArrayList<String>(numLabels); for (int counter = 0; counter < numLabels; counter++) { labelNames.add(mlData.getDataSet().attribute(labelIndices[counter]).name()); }/*from ww w . j a v a2 s . c o m*/ Attribute attrLabel = new Attribute("Label", labelNames); transformed.insertAttributeAt(attrLabel, transformed.numAttributes()); // and at the end a binary attribute ArrayList<String> binaryValues = new ArrayList<String>(2); binaryValues.add("0"); binaryValues.add("1"); Attribute classAttr = new Attribute("Class", binaryValues); transformed.insertAttributeAt(classAttr, transformed.numAttributes()); // add instances transformed = new Instances(transformed, 0); transformed.setClassIndex(transformed.numAttributes() - 1); Instances data = mlData.getDataSet(); for (int instanceIndex = 0; instanceIndex < data.numInstances(); instanceIndex++) { for (int labelCounter = 0; labelCounter < numLabels; labelCounter++) { Instance temp; temp = RemoveAllLabels.transformInstance(data.instance(instanceIndex), labelIndices); temp.setDataset(null); temp.insertAttributeAt(temp.numAttributes()); temp.insertAttributeAt(temp.numAttributes()); temp.setDataset(transformed); temp.setValue(temp.numAttributes() - 2, (String) labelNames.get(labelCounter)); if (data.attribute(labelIndices[labelCounter]) .value((int) data.instance(instanceIndex).value(labelIndices[labelCounter])).equals("1")) { temp.setValue(temp.numAttributes() - 1, "1"); } else { temp.setValue(temp.numAttributes() - 1, "0"); } transformed.add(temp); } } return transformed; }
From source file:mulan.transformations.PT6Transformation.java
License:Open Source License
public Instance transformInstance(Instance instance) throws Exception { if (labelIndices == null) { System.out.println("Label Indices not set!!"); return null; }/*from ww w .j av a 2 s. com*/ Instance transformedInstance = RemoveAllLabels.transformInstance(instance, labelIndices); transformedInstance.setDataset(null); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); transformedInstance.insertAttributeAt(transformedInstance.numAttributes()); return transformedInstance; }