Example usage for weka.filters.unsupervised.attribute Discretize getCutPoints

List of usage examples for weka.filters.unsupervised.attribute Discretize getCutPoints

Introduction

In this page you can find the example usage for weka.filters.unsupervised.attribute Discretize getCutPoints.

Prototype

public double[] getCutPoints(int attributeIndex) 

Source Link

Document

Gets the cut points for an attribute

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 w ww  . jav  a  2  s  . c  o m
    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));
        }
    }
}