List of usage examples for weka.core Instance value
public double value(Attribute att);
From source file:mulan.transformations.regression.SingleTargetTransformation.java
License:Open Source License
/** * Remove all target attributes except labelToKeep * /* w w w . ja va 2s. c om*/ * @param instance the instance to be transformed * @param targetToKeep the target to keep * @return transformed Instance */ public Instance transformInstance(Instance instance, int targetToKeep) { Instance transformedInstance; remove.input(instance); transformedInstance = remove.output(); add.input(transformedInstance); transformedInstance = add.output(); transformedInstance.setDataset(shell); int[] targetIndices = data.getLabelIndices(); transformedInstance.setValue(shell.numAttributes() - 1, instance.value(targetIndices[targetToKeep])); return transformedInstance; }
From source file:mulan.transformations.regression.SingleTargetTransformation.java
License:Open Source License
/** * Remove all target attributes except target at position indexToKeep. * // w ww .j a v a2s . c o m * @param instance the instance to be transformed * @param targetIndices the target indices to transform * @param indexToKeep the target to keep * @return transformed Instance */ public static Instance transformInstance(Instance instance, int[] targetIndices, int indexToKeep) { double[] values = instance.toDoubleArray(); double[] transformedValues = new double[values.length - targetIndices.length + 1]; int counterTransformed = 0; boolean isTarget = false; for (int i = 0; i < values.length; i++) { for (int j = 0; j < targetIndices.length; j++) { if (i == targetIndices[j] && i != indexToKeep) { isTarget = true; break; } } if (!isTarget) { transformedValues[counterTransformed] = instance.value(i); counterTransformed++; } isTarget = false; } Instance transformedInstance = DataUtils.createInstance(instance, 1, transformedValues); return transformedInstance; }
From source file:myclassifier.MyC45.java
/** * Classifies a given test instance using the decision tree. * * @param instance the instance to be classified * @return the classification/* w w w.ja v a 2 s . c o m*/ */ public double classifyInstance(Instance instance) { Instance ins = instance;//discreting(instance); if (m_Attribute == null) return m_ClassValue; else return m_Successors[(int) ins.value(m_Attribute)].classifyInstance(ins); }
From source file:myclassifier.MyC45.java
/** * Computes class distribution for instance using decision tree. * * @param instance the instance for which distribution is to be computed * @return the class distribution for the given instance *///from w ww . ja va2 s. c o m public double[] distributionForInstance(Instance instance) throws NoSupportForMissingValuesException { //instance = discreting(instance); if (m_Attribute == null) { return m_Distribution; } else { return m_Successors[(int) instance.value(m_Attribute)].distributionForInstance(instance); } }
From source file:myclassifier.MyC45.java
/** * Splits a dataset according to the values of a nominal attribute. * * @param data the data which is to be split * @param att the attribute to be used for splitting * @return the sets of instances produced by the split *//*ww w . j ava 2 s . c om*/ private Instances[] splitData(Instances data, Attribute att) { Instances[] splitData = new Instances[att.numValues()]; for (int j = 0; j < att.numValues(); j++) splitData[j] = new Instances(data, data.numInstances()); Enumeration instEnum = data.enumerateInstances(); while (instEnum.hasMoreElements()) { Instance inst = (Instance) instEnum.nextElement(); splitData[(int) inst.value(att)].add(inst); } return splitData; }
From source file:myclassifier.myC45Pack.SplitModel.java
private void handleNominalAttribute(Instances dataSet) throws Exception { Instance instance; classDist = new ClassDistribution(numOfBranches, dataSet.numClasses()); Enumeration instanceEnum = dataSet.enumerateInstances(); while (instanceEnum.hasMoreElements()) { instance = (Instance) instanceEnum.nextElement(); if (!instance.isMissing(attribIndex)) { classDist.addInstance((int) instance.value(attribIndex), instance); }//w w w . j a va2 s . co m } // Check if minimum number of Instances in at least two // subsets. if (classDist.isSplitable(minInstances)) { numSubsets = numOfBranches; infoGain = classDist.calculateInfoGain(totalWeights); gainRatio = classDist.calculateGainRatio(infoGain); } }
From source file:myclassifier.myC45Pack.SplitModel.java
public final void setSplitPoint(Instances allInstances) { double newSplitPoint = -Double.MAX_VALUE; double temp;//w w w . ja va 2 s .c o m Instance instance; if ((allInstances.attribute(attribIndex).isNumeric()) && (numSubsets > 1)) { Enumeration instancesEnum = allInstances.enumerateInstances(); while (instancesEnum.hasMoreElements()) { instance = (Instance) instancesEnum.nextElement(); if (!instance.isMissing(attribIndex)) { temp = instance.value(attribIndex); if ((temp > newSplitPoint) && (temp <= splitPointValue)) { newSplitPoint = temp; } } } splitPointValue = newSplitPoint; } }
From source file:myclassifier.myC45Pack.SplitModel.java
@Override public int getSubsetIndex(Instance instance) throws Exception { if (instance.isMissing(attribIndex)) { return -1; } else {/*from w w w .j av a 2s.c o m*/ if (instance.attribute(attribIndex).isNominal()) return (int) instance.value(attribIndex); else if (instance.value(attribIndex) <= splitPointValue) { return 0; } else { return 1; } } }
From source file:myclusterer.MyKMeans.java
private Instance createCentroid(Instances members) { double[] vals = new double[members.numAttributes()]; double[][] nominalDists = new double[members.numAttributes()][]; double[] weightMissing = new double[members.numAttributes()]; double[] weightNonMissing = new double[members.numAttributes()]; for (int j = 0; j < members.numAttributes(); j++) { if (members.attribute(j).isNominal()) { nominalDists[j] = new double[members.attribute(j).numValues()]; }//w w w . j a va2 s . com } for (int i = 0; i < members.numInstances(); ++i) { Instance inst = members.instance(i); for (int j = 0; j < members.numAttributes(); j++) { if (inst.isMissing(j)) { weightMissing[j] += inst.weight(); } else { weightNonMissing[j] += inst.weight(); if (members.attribute(j).isNumeric()) vals[j] += inst.weight() * inst.value(j); else nominalDists[j][(int) inst.value(j)] += inst.weight(); } } } for (int i = 0; i < members.numAttributes(); i++) { if (members.attribute(i).isNumeric()) { if (weightNonMissing[i] > 0) { vals[i] /= weightNonMissing[i]; } else { vals[i] = Instance.missingValue(); } } else { double max = -Double.MAX_VALUE; double maxIndex = -1; for (int j = 0; j < nominalDists[i].length; j++) { if (nominalDists[i][j] > max) { max = nominalDists[i][j]; maxIndex = j; } vals[i] = max < weightMissing[i] ? Instance.missingValue() : maxIndex; } } } return new Instance(1.0, vals); }
From source file:myID3.MyId3.java
/** * Create split of data based on the value of attribute * @param data//w ww.j a va2 s.co m * @param attribute * @return */ private Instances[] splitDataByAttribute(Instances data, Attribute attribute) { // Init the object first Instances[] subSet = new Instances[attribute.numValues()]; for (int i = 0; i < attribute.numValues(); i++) { subSet[i] = new Instances(data, data.numInstances()); } // Split it! Enumeration instanceEnum = data.enumerateInstances(); while (instanceEnum.hasMoreElements()) { Instance instance = (Instance) instanceEnum.nextElement(); subSet[(int) instance.value(attribute)].add(instance); } // Compact the array of object by removing the empty array for (int i = 0; i < attribute.numValues(); i++) { subSet[i].compactify(); // System.out.println(subSet[i]); } return subSet; }