Example usage for weka.core Instances get

List of usage examples for weka.core Instances get

Introduction

In this page you can find the example usage for weka.core Instances get.

Prototype



@Override
publicInstance get(int index) 

Source Link

Document

Returns the instance at the given position.

Usage

From source file:moa.tud.ke.patching.AdaptivePatchingAdwin.java

public double classifyInstance(weka.core.Instance inst) throws Exception {

    int region = -1;
    int defaultDecider = -1;
    int amountDeciders = -1;
    double label;

    weka.core.Instance origInst = inst;/*from   w w w . jav a 2  s .c o  m*/

    try {
        if (this.regionDecider != null) {

            // Handling of optional usage of the base class as an additional attribute.
            if (this.useBaseClassAsAttribute.isSet()) {
                Instances tmp = new Instances(this.prototypeData); // deep copy of our empty prototypeData
                tmp.add(inst);
                tmp = addBaseClassToInstances(tmp);
                weka.core.Instance inst2 = tmp.get(0);
                inst = inst2;
                inst2 = null;
            }

            // Pre-classify instance and retrieve the used Decider
            double regClass = this.regionDecider.classifyInstance(inst);

            if (regClass == 0) { // only if its in a "wrong" region

                Boolean isMultiDecider = false;
                if (this.regionDecider.getAmountOfDeciders() > 1) {
                    isMultiDecider = true;
                }

                Classifier patch;

                if (isMultiDecider) {
                    region = this.regionDecider.getLastUsedDecider();

                    //                        System.out.println("using patch region decider: "+region);

                    patch = (Classifier) regionPatches.elementAt(region);
                    if (patch != null) {
                        return patch.classifyInstance(inst);
                    }
                } else { // case b: we only have a 0/1 information about if its in the error region or not.
                    patch = (Classifier) regionPatches.elementAt(0);
                    if (patch != null) {
                        return patch.classifyInstance(inst);
                    }

                }
            } else { // if its not in a "wrong" region, return the class from the base classifier
                if (this.useBaseClassAsAttribute.isSet()) {
                    return inst.value(0); // this has maybe already been calculated into the first attribute.
                }
            }
        }
    } catch (Exception e) {
        System.err.println("AdaptivePatching : Error in classifyInstance while using regionDecider.");
        System.out.println("Region: " + region + " DefaultDecider:" + defaultDecider + " amountDeciders:"
                + amountDeciders + " regionPatches#:" + regionPatches.size());
        e.printStackTrace();
        System.exit(234545345);
    }

    return baseClassifier.classifyInstance(origInst);
}

From source file:moa.tud.ke.patching.Patching.java

/**
 * Classifies an instance by checking if it lies in an error region and then
 * using the respective patch, or just using the base classifier otherwise.
 *
 * @param inst//from  w ww  .java  2 s  . c  om
 * @return
 * @throws Exception
 */
public double classifyInstance(weka.core.Instance inst) throws Exception {

    int region = -1;
    int defaultDecider = -1;
    int amountDeciders = -1;
    double label;

    weka.core.Instance origInst = inst;

    try {
        if (this.regionDecider != null) {

            // Handling of optional usage of the base class as an additional attribute.
            if (this.useBaseClassAsAttribute.isSet()) {
                Instances tmp = new Instances(this.prototypeData); // deep copy of our empty prototypeData
                tmp.add(inst);
                tmp = addBaseClassToInstances(tmp);
                weka.core.Instance inst2 = tmp.get(0);
                inst = inst2;
                inst2 = null;
            }

            // Pre-classify instance and retrieve the used Decider
            double regClass = this.regionDecider.classifyInstance(inst);

            if (regClass == 0) { // only if its in a "wrong" region

                Boolean isMultiDecider = false;
                if (this.regionDecider.getAmountOfDeciders() > 1) {
                    isMultiDecider = true;
                }

                Classifier patch;

                if (isMultiDecider) { // a) if the classifier can disciminate different regions
                    region = this.regionDecider.getLastUsedDecider();

                    patch = (Classifier) regionPatches.elementAt(region);
                    if (patch != null) {
                        return patch.classifyInstance(inst);
                    }
                } else { // case b: we only have a 0/1 information about if its in the error region or not.
                    patch = (Classifier) regionPatches.elementAt(0);
                    if (patch != null) {
                        return patch.classifyInstance(inst);
                    }

                }
            } else { // if its not in a "wrong" region, return the class from the base classifier
                if (this.useBaseClassAsAttribute.isSet()) {
                    // this has maybe already been calculated into the first attribute, so we dont need to 
                    // classify this instance again.
                    return inst.value(0);
                }
            }
        }
    } catch (Exception e) {
        System.err.println("AdaptivePatching : Error in classifyInstance while using regionDecider.");
        System.out.println("Region: " + region + " DefaultDecider:" + defaultDecider + " amountDeciders:"
                + amountDeciders + " regionPatches#:" + regionPatches.size());
        e.printStackTrace();
    }

    return baseClassifier.classifyInstance(origInst);
}

From source file:NaiveBayes.NaiveBayes.java

public static int[] getNumEachClass(Instances ins) {
    int[] countEachClass = new int[ins.numClasses()];
    for (int i = 0; i < ins.numClasses(); i++) {
        int cnt = 0;
        for (int j = 0; j < ins.numInstances(); j++) {
            if (ins.attribute(ins.classIndex()).value(i)
                    .equals(ins.get(j).toString(ins.classIndex()).replaceAll("\\s+", "")))
                cnt++;/*from w  ww.ja  v a 2  s. c  o  m*/
        }
        countEachClass[i] = cnt;
    }
    return countEachClass;
}

From source file:NaiveBayes.Nilai.java

public Nilai(Instances inst, int i, int j, int classindex) throws Exception {
    Instances newData = new Instances(inst);
    numClass = NaiveBayes.getNumEachClass(newData);
    lower = 0;//from   w  w  w.j a v a2  s. com
    upper = 0;
    kelas = new ArrayList<>();
    //if(newData.instance(i).isMissing(j)) newData.instance(i).setValue(i, "b");
    if (newData.attribute(i).isNumeric()) {
        Discretize f = new Discretize();
        f.setInputFormat(newData);
        newData = Filter.useFilter(newData, f);
        name = newData.attribute(i).value(j);
        if (f.getCutPoints(i) != null) {
            if (j == 0) {
                lower = Double.NEGATIVE_INFINITY;
                upper = f.getCutPoints(i)[j];
            } else {
                if (j != newData.attribute(0).numValues() - 1) {
                    lower = f.getCutPoints(i)[j - 1];
                    upper = f.getCutPoints(i)[j];
                } else {
                    lower = f.getCutPoints(i)[j - 1];
                    upper = Double.POSITIVE_INFINITY;
                }
            }
        } else {
            lower = Double.NEGATIVE_INFINITY;
            upper = Double.POSITIVE_INFINITY;
        }
        for (int k = 0; k < inst.attribute(classindex).numValues(); k++) { //buat nama kelas
            double cnt = 1;
            int countClass = 0;
            for (int l = 0; l < inst.numInstances(); l++) { //jumlah seluruh instances
                double val = inst.get(l).value(i);
                if (countClass <= numClass[k]) {
                    if (inst.attribute(classindex).value(k).equalsIgnoreCase(
                            inst.get(l).toString(classindex).replaceAll("'", ""))) {/*nama kelasnya*/
                        if (val >= lower && val < upper) {//jika ada nilai yang sama pada atribut 
                            //dan kelas yang sama dan nilai dari atribut lebih besar sama dengan lower
                            cnt += 1;
                        }
                        countClass++;
                    }
                } else
                    break;
            }
            kelas.add(new Kelas(newData.attribute(classindex).value(k), cnt));
        }
    } else {
        //System.out.println(newData.attribute(i).value(j).replaceAll("\\s+", ""));
        name = newData.attribute(i).value(j).replaceAll("\\s", "");
        //System.out.println(name);
        //System.out.println(name);
        for (int k = 0; k < inst.attribute(classindex).numValues(); k++) { //buat nama kelas
            double cnt = 1;
            int countClass = 0;
            for (int l = 0; l < inst.numInstances(); l++) { //jumlah seluruh instances
                if (countClass <= numClass[k]) {
                    //System.out.println("with whitespace "+inst.attribute(i).value(j)+"without "+inst.attribute(i).value(j).replaceAll("\\s", "")+"p");
                    //                        System.out.println(inst.get(l).toString(classindex));
                    //System.out.println(inst.attribute(classindex).value(k));
                    if (inst.attribute(classindex).value(k).replaceAll("\\s", "")
                            .equalsIgnoreCase(inst.get(l).toString(classindex).replaceAll("\\s", ""))//nama kelas
                            && inst.attribute(i).value(j).replaceAll("\\s", "").//cek nama atribut
                                    equalsIgnoreCase(inst.get(l).toString(i).replaceAll("\\s", ""))) {
                        //jika ada nilai yang sama pada atribut 
                        //dan kelas yang sama dan nilai dari atribut lebih besar sama dengan lower
                        cnt += 1;
                        countClass++;
                    }
                } else
                    break;
            }
            kelas.add(new Kelas(newData.attribute(classindex).value(k).replaceAll("\\s+", ""), cnt));
        }
    }
}

From source file:NaiveBayesPckge.mushClass.java

/**
 * Untuk membuat tabel banyaknya kesimpulan tiap label. Misal T ada berapa, F ada berapa.
 * @param instance instance yang digunakan
 * @param nConclusion banyaknya label kesimpulan
 *///from  w  w  w .  j a v a 2s. c om
public void countConclusionProcedure(Instances instance, int nConclusion) {
    int count;
    for (int index = 0; index < nConclusion; index++) {
        count = 0;
        for (int i = 0; i < instance.numInstances(); i++) {
            if (instance.get(i).stringValue(0) == instance.attribute(0).value(index))
                count++;
        }
        countConclusion[index] = count;
    }
    System.out.println("3");
}

From source file:NaiveBayesPckge.mushClass.java

/**
 * Digunakan untuk menghitung frekuensi tiap nilai atribut
 * @param instance instance yang diberikan
 * @param indexAtrib indeks dari atribut (misal atr1, atr2, atr2)
 * @param indexValue indeks dari value / label dari atribut tertentu
 * @param indexConclusion indeks dari label kesimpulan
 * @return //from w  w  w . j ava2s  .  c om
 */
public int countLabel(Instances instance, int indexAtrib, int indexValue, int indexConclusion) {
    int count = 0;
    for (int i = 0; i < instance.numInstances(); i++) {
        if ((instance.get(i).stringValue(indexAtrib) == instance.attribute(indexAtrib).value(indexValue))//)
                && (instance.get(i).stringValue(0).equals(instance.attribute(0).value(indexConclusion))))
            count++;
    }
    return count;
}

From source file:NaiveBayesPckge.NaiveBayesCode.java

/**
 * Untuk membuat tabel banyaknya kesimpulan tiap label. Misal T ada berapa, F ada berapa.
 * @param instance instance yang digunakan
 * @param nConclusion banyaknya label kesimpulan
 *//*from ww  w  .j  a v  a  2  s.c  om*/
public void countConclusionProcedure(Instances instance, int nConclusion) {
    int count;
    for (int index = 0; index < nConclusion; index++) {
        count = 0;
        for (int i = 0; i < instance.numInstances(); i++) {
            if (instance.get(i).stringValue(instance.numAttributes() - 1) == instance
                    .attribute(instance.numAttributes() - 1).value(index))
                count++;
        }
        countConclusion[index] = count;
    }
}

From source file:NaiveBayesPckge.NaiveBayesCode.java

/**
 * Digunakan untuk menghitung frekuensi tiap nilai atribut
 * @param instance instance yang diberikan
 * @param indexAtrib indeks dari atribut (misal atr1, atr2, atr2)
 * @param indexValue indeks dari value / label dari atribut tertentu
 * @param indexConclusion indeks dari label kesimpulan
 * @return //from ww  w . j a v  a2s.c om
 */
public int countLabel(Instances instance, int indexAtrib, int indexValue, int indexConclusion) {
    int count = 0;
    for (int i = 0; i < instance.numInstances(); i++) {
        if ((instance.get(i).stringValue(indexAtrib) == instance.attribute(indexAtrib).value(indexValue))//)
                && (instance.get(i).stringValue(instance.numAttributes() - 1)
                        .equals(instance.attribute(instance.numAttributes() - 1).value(indexConclusion))))
            count++;
    }
    return count;
}

From source file:NaiveBayesPckge.NaiveBayesMain.java

public static void printCoba(Instances instance) {
    System.out.println("");
    System.out.println("1. first instance : " + instance.firstInstance());
    System.out.println("2. banyaknya atribut :" + instance.numAttributes());
    System.out.println("3. " + instance.attribute(0).numValues());
    System.out.println("4. " + instance.attribute(0).weight());
    System.out.println("5. " + instance.attribute(instance.numAttributes() - 1).numValues());
    System.out.println("6. " + instance.get(0));
    System.out.println("7. " + instance.get(0).stringValue(4));
    System.out.println("8. " + instance.numInstances());
    System.out.println("9. " + instance.attribute(instance.numAttributes() - 1).numValues());
    System.out.println("10. " + instance.get(1).stringValue(instance.numAttributes() - 1));
    System.out.println("11. " + instance.attribute(instance.numAttributes() - 1).value(0));
    System.out.println("12. " + instance.attribute(instance.numAttributes() - 1).name());
    System.out.println("13. " + instance.numClasses());
    System.out.println("14. Banyaknya kelas yang diuji : " + instance.classIndex());
    //        System.out.println("15. " + (String.valueOf(instance.attribute(0).value(34)).equals(String.valueOf(4.3))));
    //        System.out.println("16. " + instance);
}

From source file:nl.uva.sne.commons.ClusterUtils.java

public static Map<String, String> classify(String testDataPath, Classifier classifier) throws Exception {

    Instances testData = createInstancesWithClasses(testDataPath);
    testData.setClassIndex(testData.numAttributes() - 1);

    Map<String, String> classes = new HashMap();
    for (int j = 0; j < testData.numInstances(); j++) {
        //                System.err.println(m);
        Instance inst = testData.get(j);
        String id = inst.toString().split(",")[0];
        //                System.err.println(inst);
        //            System.out.print("ID: " + UNdata.instance(j).value(0) + " ");
        int clsLabel = (int) classifier.classifyInstance(inst);
        //            String theClass = testData.classAttribute().value(clsLabel);
        //            System.err.println(id + " " + clsLabel);
        classes.put(testDataPath + File.separator + id, String.valueOf(clsLabel));
    }//ww  w.j  a v  a  2s  .c  o  m
    return classes;
}