Example usage for weka.core Instance setValue

List of usage examples for weka.core Instance setValue

Introduction

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

Prototype

public void setValue(Attribute att, String value);

Source Link

Document

Sets a value of an nominal or string attribute to the given value.

Usage

From source file:NaiveBayes.NaiveBayes.java

public String classify(Instances init) {
    int nAttributes = init.numAttributes();
    Instance ins = new DenseInstance(nAttributes);
    Instances newData = init;/*from   w  ww .  j  a va  2s  .c o  m*/
    Scanner s = new Scanner(System.in);
    Double in;
    System.out.println("Jumlah Atribut : " + (nAttributes - 1));

    for (int i = 1; i <= nAttributes - 1; i++) {
        //Attribute a = train.attribute(i - 1);
        System.out.print("Attribute " + i + " : ");
        in = s.nextDouble();
        ins.setValue(i, in);
        //newIns[i] = in;
    }
    newData.add(ins);
    double nomorKelas = classifyInstance(newData.lastInstance());
    return init.attribute(init.numAttributes() - 1).value((int) nomorKelas);
}

From source file:net.sf.bddbddb.OrderClassifier.java

License:LGPL

public double importance(weka.core.Attribute attribute, String attrValue) {//, String classValue){

    int count = 0;
    int goodCount = 0, badCount = 0;
    List newInstances = new LinkedList();

    for (Iterator it = orders.iterator(); it.hasNext();) {
        Instance instance = (Instance) it.next();
        if (//!instance.stringValue(instance.classIndex()).equals(classValue) ||
        !instance.stringValue(attribute).equals(attrValue))
            continue;

        if (goodClusters.contains(instance.stringValue(instance.classIndex())))
            ++goodCount;//from  w  w  w .  j a va 2  s.c om
        else
            ++badCount;

        Instance newInstance = new Instance(instance);
        newInstance.setDataset(instance.dataset());
        newInstances.add(newInstance);
    }
    goodCount *= attrOptions.size() - 1;
    badCount *= attrOptions.size() - 1;
    for (Iterator it = newInstances.iterator(); it.hasNext();) {
        Instance instance = (Instance) it.next();
        /*      if(//!instance.stringValue(instance.classIndex()).equals(classValue) || 
         !instance.stringValue(attribute).equals(attrValue)) continue;
         */

        String classValue = instance.stringValue(instance.classIndex());
        FastVector newOptions = new FastVector();
        newOptions.appendElements(attrOptions);
        newOptions.removeElementAt(newOptions.indexOf(instance.stringValue(attribute)));
        //int index = Math.abs(LearnedOrder.randomNumGen.nextInt()) % newOptions.size();
        int index = 0;
        while (index < newOptions.size()) {
            instance.setValue(attribute, attrOptions.indexOf(newOptions.elementAt(index)));
            String value = classify(instance);
            if (goodClusters.contains(classValue)) {
                if (goodClusters.contains(value))
                    --goodCount;
            } else if (!goodClusters.contains(classValue)) {
                if (!goodClusters.contains(value))
                    --badCount;
            }
            ++index;
        }
        //if(value.equals(classValue)) --count;
    }

    count = goodCount - badCount;
    count /= attrOptions.size() - 1;

    double importance = ((double) count) / newInstances.size();
    if (Double.isNaN(importance))
        return 0;
    return importance;
}

From source file:net.sf.bddbddb.OrderClassifier.java

License:LGPL

public void load(BufferedReader in) {
    try {/*from w  ww . ja v a 2 s. c  o m*/
        String strClusts = in.readLine();
        setNumClasses(Integer.parseInt(strClusts));

        for (;;) {
            String line = in.readLine();
            if (line == null)
                break;
            Instance instance = new Instance(attributes.size());
            StringTokenizer st = new StringTokenizer(line, ",");
            int i = 0;
            while (st.hasMoreTokens()) {
                String str = st.nextToken();
                //   System.out.println("attr " + attributes.elementAt(i) + " val: " + str);
                instance.setValue((weka.core.Attribute) attributes.elementAt(i), str);
                ++i;
            }
            line = in.readLine();
            instance = new MyInstance(instance, Long.parseLong(line));
            orders.add(instance);
        }
        buildClassifier();
    } catch (IOException e) {
        e.printStackTrace();
        Assert.UNREACHABLE("Could not load instances");
    } catch (Exception e) {
        e.printStackTrace();
        Assert.UNREACHABLE("Could not build classifier");
    }
}

From source file:net.sf.bddbddb.OrderClassifier.java

License:LGPL

public Instance makeInstance(String varOrder) {
    Instance instance = new MyInstance(attributes.size());
    for (int i = 0; i < attributes.size() - 1; i++) {
        instance.setValue((weka.core.Attribute) attributes.elementAt(i), ">");
    }/*from w w  w.  j  a  v a2s  .  c  om*/
    StringTokenizer st = new StringTokenizer(varOrder, "_");
    List lefts = new LinkedList();
    while (st.hasMoreTokens()) {
        String pdomain = st.nextToken();
        // System.out.println("pdomain: " + pdomain);
        StringTokenizer st2 = new StringTokenizer(pdomain, "x");
        if (st2.countTokens() > 1) {
            List interLefts = new LinkedList();
            while (st2.hasMoreTokens()) {
                String idomain = st2.nextToken();
                //   System.out.println("idomain: " + idomain);

                BDDDomain d = rule.solver.getBDDDomain(idomain);
                if (!domainSet.contains(d))
                    continue;
                Collection pairs = domainToAttrPairs.getValues(d);
                //  System.out.println("interlefts: " + interLefts);
                //  System.out.println("pairs: " + pairs);

                pair(instance, interLefts, pairs, "=", true);
                interLefts.addAll(pairs);

                pair(instance, lefts, pairs, "<", false);
                lefts.addAll(pairs);
            }

            continue;
        }
        BDDDomain d = rule.solver.getBDDDomain(pdomain);
        if (!domainSet.contains(d))
            continue;
        Collection pairs = domainToAttrPairs.getValues(d);
        pair(instance, lefts, pairs, "<", false);
        lefts.addAll(pairs);

    }
    // System.out.print("attributes:");
    /*   for(int i = 0; i < attributes.size(); i++){
     System.out.print(" " + attributes.elementAt(i));
     }
     */
    //  System.out.println();
    // System.out.println("instance: " + instance);
    return instance;
}

From source file:net.sf.bddbddb.OrderClassifier.java

License:LGPL

private void pair(Instance instance, List lefts, Collection pairs, String value, boolean reverse) {
    for (Iterator it = lefts.iterator(); it.hasNext();) {
        Pair left = (Pair) it.next();// w w  w .  j a v  a2 s .co m
        for (Iterator jt = pairs.iterator(); jt.hasNext();) {
            Pair right = (Pair) jt.next();
            if (right.equals(left))
                continue;
            Pair p = new Pair(left, right);
            weka.core.Attribute a = new MyAttribute(p, attrOptions);
            int index = attributes.indexOf(a);
            if (index == -1) {
                if (reverse) {
                    Pair r = new Pair(right, left);
                    a = new MyAttribute(r, attrOptions);
                    index = attributes.indexOf(a);
                } else
                    continue;
            }

            Assert._assert(index != -1, " no attribute for " + p + " found. attributes: " + attributes);
            //  System.out.println("Setting " + a.toString() + " to " + value);
            instance.setValue((weka.core.Attribute) attributes.elementAt(index), value);
        }
    }
}

From source file:net.sf.jclal.activelearning.oracle.ConsoleHumanOracle.java

License:Open Source License

/**
 * Method for the specific case of a multi-label dataset.
 *
 * @param queryStrategy The query strategy to use
 *//*w  w  w.  j av a 2 s .c om*/
private void labelMultiLabelInstances(IQueryStrategy queryStrategy) {

    //Object to read from the console
    Scanner scanner = new Scanner(new BufferedInputStream(System.in));

    AbstractMultiLabelQueryStrategy multiLabelQueryStrategy = (AbstractMultiLabelQueryStrategy) queryStrategy;

    ArrayList<Integer> selected = multiLabelQueryStrategy.getSelectedInstances();

    ArrayList<String> labels = new ArrayList<String>(
            multiLabelQueryStrategy.getLabelsMetaData().getLabelNames());

    //For each selected instance
    for (int i : selected) {

        //Ask to the oracle about the class of the instance
        Instance instance = multiLabelQueryStrategy.getUnlabelledData().instance(i);

        System.out.println("\nWhat are the labels of this multi-label instance?");

        System.out.println("Instance:" + instance.toString() + "\n");

        StringTokenizer line;

        do {

            System.out.println("IndexLabels: LabelName");

            int index = 0;

            for (String label : labels) {

                System.out.println((index++) + "-" + label);
            }

            System.out.println(
                    "\n Type the indexes of the labels that the instance belongs separated by a colon");

            line = new StringTokenizer(scanner.next(), ",");

        } while (line.countTokens() == 0);

        //Reset the labels
        for (int labelIndex = 0; labelIndex < multiLabelQueryStrategy.getNumLabels(); labelIndex++) {
            instance.setValue(multiLabelQueryStrategy.getLabelIndices()[labelIndex], 0);
        }

        while (line.hasMoreTokens()) {

            int labelIndex = Integer.valueOf(line.nextToken());

            Attribute att = instance.dataset().attribute(labels.get(labelIndex));

            instance.setValue(att, 1);

        }
        System.out.println();
    }

}

From source file:net.sf.markov4jmeter.behaviormodelextractor.extraction.transformation.clustering.AbstractClusteringStrategy.java

License:Apache License

/**
 * Returns a instance as vector based on a single BehaviorModelAbsolute.
 * //from ww w.j  a  v  a2  s  .com
 * @param behaviorModelsAbsolute
 * @return a instance, transitions of behaviorModelAbsolute as input vector
 */
protected Instance getInstance(BehaviorModelAbsolute behaviorModelAbsolute, Instances instances) {

    // create new instance with size n x (n + 1)
    int nrVertices = behaviorModelAbsolute.getVertices().size() - 1;
    Instance instance = new Instance((nrVertices * (nrVertices + 1)) + 1);
    final List<Vertex> vertices = behaviorModelAbsolute.getVertices();
    int indexOfAttribute = 0;
    for (final Vertex srcVertex : vertices) {
        if (srcVertex.getUseCase() != null) { // no final state
            // for each transition set the value of the instance vector
            for (final Vertex dstVertex : vertices) {
                final UseCase srcUseCase = srcVertex.getUseCase();
                final UseCase dstUseCase = dstVertex.getUseCase();
                final String srcUseCaseId = srcUseCase.getId();

                // if dstUseCase is null, its vertex denotes the final state
                // (no ID);
                final String dstUseCaseId = (dstUseCase != null) ? dstUseCase.getId() : null;
                Transition transition = this.findTransitionByUseCaseIDs(behaviorModelAbsolute, srcUseCaseId,
                        dstUseCaseId);

                if (transition != null) {
                    instance.setValue(indexOfAttribute, transition.getValue());
                } else {
                    instance.setValue(indexOfAttribute, 0);
                }
                indexOfAttribute++;
            }
        } else {
            continue; // skip final state ("$");
        }
    }

    instance.setDataset(instances);

    // set attribute for classification
    instance.setValue(indexOfAttribute, behaviorModelAbsolute.getTransactionType());
    return instance;
}

From source file:Neural_Network.NuralN.java

private static Instance toInstance(String[] instanceData) {
    try {// w ww  .  j a v  a2 s.com
        loadDataTemplate();
        Instance tempInstance = new Instance(temp.numAttributes());
        tempInstance.setDataset(temp);

        for (int index = 0; index < instanceData.length; index++) {
            tempInstance.setValue(index, instanceData[index]);
        }
        temp.add(tempInstance);
    } catch (Exception e) {
        System.err.println(e.toString());
    }
    return temp.lastInstance();
}

From source file:newdtl.NewJ48.java

/**
 * Creates a J48 tree./*from   w  w w  .j  a v a2 s . c  o  m*/
 *
 * @param data the training data
 * @exception Exception if tree failed to build
 */
private void makeTree(Instances data) throws Exception {

    // Mengecek apakah tidak terdapat instance dalam node ini
    if (data.numInstances() == 0) {
        splitAttribute = null;
        label = DOUBLE_MISSING_VALUE;
        classDistributions = new double[data.numClasses()];
        isLeaf = true;
    } else {
        // Mencari Gain Ratio maksimum
        double[] gainRatios = new double[data.numAttributes()];
        double[] thresholds = new double[data.numAttributes()];

        Enumeration attEnum = data.enumerateAttributes();
        while (attEnum.hasMoreElements()) {
            Attribute att = (Attribute) attEnum.nextElement();
            double[] result = computeGainRatio(data, att);
            gainRatios[att.index()] = result[0];
            thresholds[att.index()] = result[1];
        }

        splitAttribute = data.attribute(maxIndex(gainRatios));

        if (splitAttribute.isNumeric()) {
            splitThreshold = thresholds[maxIndex(gainRatios)];
        } else {
            splitThreshold = Double.NaN;
        }

        classDistributions = new double[data.numClasses()];
        for (int i = 0; i < data.numInstances(); i++) {
            Instance inst = (Instance) data.instance(i);
            classDistributions[(int) inst.classValue()]++;
        }

        // Membuat daun jika Gain Ratio-nya 0
        if (Double.compare(gainRatios[splitAttribute.index()], 0) == 0) {
            splitAttribute = null;

            label = maxIndex(classDistributions);
            classAttribute = data.classAttribute();
            isLeaf = true;
        } else {
            // Mengecek jika ada missing value
            if (isMissing(data, splitAttribute)) {
                // cari modus
                int index = modusIndex(data, splitAttribute);

                // ubah data yang punya missing value
                Enumeration dataEnum = data.enumerateInstances();
                while (dataEnum.hasMoreElements()) {
                    Instance inst = (Instance) dataEnum.nextElement();
                    if (inst.isMissing(splitAttribute)) {
                        inst.setValue(splitAttribute, splitAttribute.value(index));
                    }
                }
            }

            // Membuat tree baru di bawah node ini
            Instances[] splitData;
            if (splitAttribute.isNumeric()) {
                splitData = splitData(data, splitAttribute, splitThreshold);
                children = new NewJ48[2];
                for (int j = 0; j < 2; j++) {
                    children[j] = new NewJ48();
                    children[j].makeTree(splitData[j]);
                }
            } else {
                splitData = splitData(data, splitAttribute);
                children = new NewJ48[splitAttribute.numValues()];
                for (int j = 0; j < splitAttribute.numValues(); j++) {
                    children[j] = new NewJ48();
                    children[j].makeTree(splitData[j]);
                }
            }
            isLeaf = false;
        }
    }
}

From source file:ocr.ARFFSymbolFilter.java

License:Apache License

public static Instance constructInstance(final Symbol s, final double alph) {
    final StringTokenizer st = new StringTokenizer(constructStringInstance(s, alph), " ");
    ARFFSymbolFilter.na = st.countTokens() / 2;
    if (ARFFSymbolFilter.na == 0) {
        return null;
    }/*from   w  w  w.ja  va2s  .  c  om*/
    final Instance instance = new Instance(ARFFSymbolFilter.na + 1);
    for (int i = 0; i < ARFFSymbolFilter.na; ++i) {
        st.nextToken();
        instance.setValue(i, Double.parseDouble(st.nextToken()));
    }
    return instance;
}