Example usage for weka.core Instance value

List of usage examples for weka.core Instance value

Introduction

In this page you can find the example usage for weka.core Instance value.

Prototype

public double value(Attribute att);

Source Link

Document

Returns an instance's attribute value in internal format.

Usage

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;
}