Example usage for weka.core Instances attribute

List of usage examples for weka.core Instances attribute

Introduction

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

Prototype

publicAttribute attribute(String name) 

Source Link

Document

Returns an attribute given its name.

Usage

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   ww w. j  a v a  2s.  c om
    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:naivebayes.TucilWeka.java

public static Instances readDataSet(String filepath) {
    //Membaca dataset

    Instances data = null;
    try {//w w w . j  ava  2 s .  c  om
        data = DataSource.read(filepath);
    } catch (Exception ex) {
        Logger.getLogger(TucilWeka.class.getName()).log(Level.SEVERE, null, ex);
    }
    for (int i = 0; i < data.numAttributes(); i++) {
        System.out.println(i + ". " + data.attribute(i));
    }
    Scanner scan = new Scanner(System.in);
    System.out.print("Class Index : ");
    int temp = scan.nextInt();
    data.setClassIndex(temp);
    if (temp == 26) {
        // data.deleteAttributeAt(27);
    } else
    //jika 27
    {
        //data.deleteAttributeAt(26);
    }
    for (int i = 0; i < data.numAttributes(); i++) {
        System.out.println(i + ". " + data.attribute(i));
    }
    System.out.println("Index kelasnya: " + data.classIndex());
    // data.setClassIndex(data.numAttributes()-1);
    Instances retval = filterDiscretize(data);
    return retval;
}

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
 */// w w  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(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  ww w .  j  a v a 2  s .c  o  m*/
 */
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.mushClass.java

/**
 * Digunakan untuk menghitung frekuensi tiap nilai atribut dan memanggil fungsi countLabel()
 * @param instance Instance yang digunakan
 *///from w  w  w. ja va2 s  . co m
public void setCountLabel(Instances instance) {
    // iterasi tiap atribut
    for (int i = 0; i < instance.numAttributes(); i++) { // issue : why dikurangi satu || Solved. Yes thats right !!
        // iterasi tiap label dalam atribut
        for (int j = 0; j < instance.attribute(i).numValues(); j++) {
            // iterasi tiap kesimpulan
            for (int k = 0; k < instance.attribute(0).numValues(); k++) {
                atribNom[i].setCountAtribut(j, k, countLabel(instance, i, j, k));
            }
        }
    }

}

From source file:NaiveBayesPckge.mushClass.java

/**
 * Digunakan untuk mencetak frekuensi tiap nilai atribut sesuai dengan indexConclusion
 * @param instance instance yang digunakan
 * @param IndexAtrbt indeks dari atribut yang akan dicetak
 * @param indexConclusion indeks dari label kesimpulan yang akan dicetak
 *//* ww w.  j av a2s .c o  m*/
public void printFrequencyEachValueOfAtributByIndex(Instances instance) {
    System.out.println("\n###\nPrint frequency Each value of attribut :\n");
    for (int i = 0; i < instance.numAttributes(); i++) {
        System.out.println("(" + (i + 1) + "). Attribut : " + instance.attribute(i).name());
        for (int j = 0; j < instance.attribute(i).numValues(); j++) {
            System.out.print((j + 1) + ". " + instance.attribute(i).value(j) + " =");
            for (int k = 0; k < instance.attribute(instance.numAttributes() - 1).numValues(); k++) {
                if (i == instance.numAttributes() - 1)
                    System.out.print("");
                else
                    System.out.print("\t\t" + atribNom[i].getCountAtribut(j, k));

            }
            if (i == instance.numAttributes() - 1)
                System.out.print(" " + countConclusion[j]);
            System.out.println("");
        }
        System.out.println("");
    }
}

From source file:NaiveBayesPckge.mushClass.java

/**
 * Prosedur ini digunakan untuk menghitung Model Probabilitasnya
 * @param instance instance yang digunakan
 *//*from  w  ww  .  j  a  va 2 s  .c o  m*/
public void setModelProbability(Instances instance) {
    // iterasi tiap atribut
    for (int i = 0; i < instance.numAttributes(); i++) {
        // iterasi tiap label dalam atribut
        for (int j = 0; j < instance.attribute(i).numValues(); j++) {
            // iterasi tiap kesimpulan
            for (int k = 0; k < instance.attribute(0).numValues(); k++) {
                atribNom[i].setAtribut(j, k, countProbability(instance, i, j, k));
            }
        }
    }
}

From source file:NaiveBayesPckge.mushClass.java

public void printModelProbability(Instances instance) {
    DecimalFormat df = new DecimalFormat("#.##");
    int nConclus = instance.attribute(instance.numAttributes() - 1).numValues();

    System.out.println("\n###\nPrint Probability Model");
    System.out.println("This value was formatted with 2 decimal places");
    System.out.println("");
    System.out.print("\t\t");

    for (int k = 0; k < nConclus; k++) {
        System.out.print("\t\t" + instance.attribute(instance.numAttributes() - 1).value(k));
    }/*from ww  w  .  jav  a 2s . c  om*/
    System.out.println("");

    // iterasi tiap atribut
    for (int i = 0; i < instance.numAttributes() - 1; i++) {
        System.out.println((i + 1) + ". " + instance.attribute(i).name());
        // iterasi tiap label dalam atribut
        for (int j = 0; j < instance.attribute(i).numValues(); j++) {

            if ((j + 1) < 10)
                System.out.print("00" + (j + 1) + ". " + instance.attribute(i).value(j));
            else if ((j + 1) >= 10 && j < 100)
                System.out.print("0" + (j + 1) + ". " + instance.attribute(i).value(j));
            else
                System.out.print((j + 1) + ". " + instance.attribute(i).value(j));
            // iterasi tiap kesimpulan
            for (int k = 0; k < instance.attribute(instance.numAttributes() - 1).numValues(); k++) {
                double aa = (double) atribNom[i].getAttribObjectType(j, k);
                System.out.printf("\t\t" + df.format(aa));
            }
            System.out.println("");
        }
        System.out.println("");
    }
}

From source file:NaiveBayesPckge.mushClass.java

/**
 * Menjalankan program utama untuk Naive Bayes
 * @param instance instance yang digunakan
 *///from w w w.j  a v  a 2  s  .  c o m
public void run(Instances instance) {
    // Inisiasi awal banyaknya atribut dan data yang di assign
    // misal ada T dan F,, berati nConclusion=2
    int nConclusion = instance.attribute(0).numValues(); // banyaknya hasil konklusi
    instanceCopy = instance;

    for (int i = 0; i < instance.numAttributes(); i++) {
        atribNom[i] = new AttributeNominal(instance.attribute(i).numValues(), nConclusion);
    }

    countConclusion = new int[nConclusion];

    countConclusionProcedure(instance, nConclusion);

    // hitung jumlah data tiap label di atribut
    setCountLabel(instance);

    // melakukan setting atau mengisi model probabilitas
    setModelProbability(instance);

    //banyaknya instance
    int nInstance = instance.numInstances();

    //banyaknya jenis kesimpulan
    int nProbabConclusion = instance.attribute(0).numValues();

    //array untuk menyimpan nilai probabilitas dari konklusi.
    //misal T probabilitasnya berapa, F probabilitasnya berapa.
    probabConclusion = new float[nProbabConclusion];
    for (int i = 0; i < nProbabConclusion; i++) {
        probabConclusion[i] = (float) countConclusion[i] / (float) nInstance;
    }

    //        printModelProbability(instance);
    //        printFrequencyEachValueOfAtributByIndex(instance);
    System.out.println("");
}

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
 *///  w w  w.  j  a  v  a  2s.  c o m
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;
    }
}