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:transformation.mimlTOml.MiniMaxTransformation.java

License:Open Source License

@Override
public Instance transformInstance(Bag bag) throws Exception {
    int labelIndices[] = dataset.getLabelIndices();
    Instance newInst = new DenseInstance(template.numAttributes());

    // sets the bagLabel
    newInst.setDataset(bag.dataset()); // Sets the reference to the dataset
    newInst.setValue(0, bag.value(0));

    // retrieves instances (relational value)
    Instances instances = bag.getBagAsInstances();
    // For all attributes in bag
    for (int j = 0, attIdx = 1; j < instances.numAttributes(); j++, attIdx++) {
        double[] minimax = minimax(instances, j);
        newInst.setValue(attIdx, minimax[0]);// minima value
        newInst.setValue(attIdx + instances.numAttributes(), minimax[1]);// maxima
        // value);
    }/*w  w  w  .j  ava  2  s  .  c  o  m*/

    // Insert label information into the instance
    for (int j = 0; j < labelIndices.length; j++) {
        newInst.setValue(updatedLabelIndices[j], bag.value(labelIndices[j]));
    }

    return newInst;
}

From source file:tubes1.Main.java

/**
 * @param args the command line arguments
 *//*from   ww w  .  j a v  a 2  s  .co  m*/
public static void main(String[] args) throws IOException, Exception {
    // TODO code application logic here
    String filename = "weather";

    //Masih belum mengerti tipe .csv yang dapat dibaca seperti apa
    //CsvToArff convert = new CsvToArff(filename+".csv");

    //LOAD FILE
    BufferedReader datafile = readDataFile("src/" + filename + ".arff");
    Instances data = new Instances(datafile);
    data.setClassIndex(data.numAttributes() - 1);
    //END OF LOAD FILE

    CustomFilter fil = new CustomFilter();

    //REMOVE USELESS ATTRIBUTE
    data = fil.removeAttribute(data);
    System.out.println(data);

    Instances[] allData = new Instances[4];
    //data for Id3
    allData[0] = fil.resampling(fil.convertNumericToNominal(data));
    //data for J48
    allData[1] = fil.convertNumericToNominal(fil.resampling(data));
    //data for myId3
    allData[2] = allData[0];
    //data for myC4.5
    allData[3] = fil.resampling(fil.convertNumericToNominal(fil.convertNumericRange(data)));

    data = fil.convertNumericToNominal(data);
    // BUILD CLASSIFIERS
    Classifier[] models = { new Id3(), //C4.5
            new J48(), new myID3(), new myC45() };

    for (int j = 0; j < models.length; j++) {
        FastVector predictions = new FastVector();
        //FOR TEN-FOLD CROSS VALIDATION
        Instances[][] split = crossValidationSplit(allData[j], 10);
        // Separate split into training and testing arrays
        Instances[] trainingSplits = split[0];
        Instances[] testingSplits = split[1];
        System.out.println("\n---------------------------------");
        for (int i = 0; i < trainingSplits.length; i++) {
            try {
                //                    System.out.println("Building for training Split : " + i);
                Evaluation validation = classify(models[j], trainingSplits[i], testingSplits[i]);

                predictions.appendElements(validation.predictions());

                // Uncomment to see the summary for each training-testing pair.
                //                    System.out.println(models[j].toString());
            } catch (Exception ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            // Calculate overall accuracy of current classifier on all splits
            double accuracy = calculateAccuracy(predictions);

            // Print current classifier's name and accuracy in a complicated,
            // but nice-looking way.
            System.out.println(String.format("%.2f%%", accuracy));
        }
        models[j].buildClassifier(allData[j]);
        Model.save(models[j], models[j].getClass().getSimpleName());
    }

    //test instance
    Instances trainingSet = new Instances("Rel", getFvWekaAttributes(data), 10);
    trainingSet.setClassIndex(data.numAttributes() - 1);

    Instance testInstance = new Instance(data.numAttributes());
    for (int i = 0; i < data.numAttributes() - 1; i++) {
        System.out.print("Masukkan " + data.attribute(i).name() + " : ");
        Scanner in = new Scanner(System.in);
        String att = in.nextLine();
        if (isNumeric(att)) {
            att = fil.convertToFit(att, data, i);
        }
        testInstance.setValue(data.attribute(i), att);
    }

    //        System.out.println(testInstance);
    //        System.out.println(testInstance.classAttribute().index());

    trainingSet.add(testInstance);

    Classifier Id3 = Model.load("Id3");
    Classifier J48 = Model.load("J48");
    Classifier myID3 = Model.load("myID3");
    Classifier MyC45 = Model.load("myC45");
    //        Classifier MyId3 = Model.load("myID3");

    Instance A = trainingSet.instance(0);
    Instance B = trainingSet.instance(0);
    Instance C = trainingSet.instance(0);
    Instance D = trainingSet.instance(0);

    //test with ID3 WEKA
    A.setClassValue(Id3.classifyInstance(trainingSet.instance(0)));
    System.out.println("Id3 Weka : " + A);

    //test with C4.5 WEKA
    B.setClassValue(J48.classifyInstance(trainingSet.instance(0)));
    System.out.println("C4.5 Weka : " + B);

    //test with my C4.5
    C.setClassValue(MyC45.classifyInstance(trainingSet.instance(0)));
    System.out.println("My C4.5 : " + C);

    //test with my ID3
    D.setClassValue(myID3.classifyInstance(trainingSet.instance(0)));
    System.out.println("My ID3 : " + D);
}

From source file:tubes2.myClusterers.myAgnes.java

public Instance getCentroid(Instances cluster) {
    Instance centroid = new Instance(cluster.numAttributes());
    for (int i = 0; i < cluster.numAttributes(); i++) {
        double atrValueTotal = 0;
        for (int j = 0; j < cluster.numInstances(); j++) {
            atrValueTotal += cluster.instance(j).value(i);
        }/* ww  w  . j  av  a2  s.c o  m*/
        double atrValueMean = atrValueTotal / cluster.numInstances();
        centroid.setValue(cluster.attribute(i), atrValueMean);
    }
    return centroid;
}

From source file:tubes2.myClusterers.myKMeans.java

public Instance mean(Instances i) {
    Instance mean = new weka.core.Instance(i.numAttributes());
    for (int j = 0; j < i.numAttributes(); j++) {
        double meanValue = meanValue(i, j);
        mean.setValue(j, meanValue);
    }/* w  w  w.  j ava  2  s  .c  om*/
    return mean;
}

From source file:tucil.dua.ai.TucilDuaAi.java

public static void addInstance(Instances d) {
    Scanner input = new Scanner(System.in);
    Instance temp = new DenseInstance(d.numAttributes());
    for (int i = 0; i < (d.numAttributes() - 1); i++) {
        System.out.print(d.attribute(i) + " = ");
        Double x = input.nextDouble();
        temp.setValue(d.attribute(i), x);
    }// w w w  . j  a  v a  2  s  .  c om
    System.out.print(d.attribute(d.numAttributes() - 1) + " = ");
    String x = input.next();
    temp.setValue(d.attribute(d.numAttributes() - 1), x);
    d.add(temp);
}

From source file:uk.ac.ed.inf.acedemo.classifiers.Classifier.java

License:Apache License

@Override
protected Instance constructInstance(ReadableDocument document) {
    Instance instance = new DenseInstance(58);
    double[] values = (double[]) document.getContent();

    for (int index = 0; index < values.length; index++) {
        instance.setValue(index + 1, values[index]);
    }//from  w  w  w .  j av a 2  s.  c  o m

    return instance;
}

From source file:util.Weka.java

public Instance casoADecidir(double... atributos) {
    Instance casoAdecidir = new Instance(casosEntrenamiento.numAttributes());
    casoAdecidir.setDataset(casosEntrenamiento);
    for (int i = 0; i < atributos.length; i++) {
        casoAdecidir.setValue(i, atributos[i]);
    }/*www.  ja  v a 2  s  .  c o m*/
    return casoAdecidir;
}

From source file:utils.MlStormFeatureVectorUtils.java

License:Apache License

public static weka.core.Instance buildWekaInstance(double[] featureVector) {
    weka.core.Instance instance = new DenseInstance(featureVector.length);
    for (int i = 0; i < featureVector.length; i++) {
        instance.setValue(i, featureVector[i]);
    }/* w ww.ja  va2 s  .c om*/
    return instance;
}

From source file:view.centerPanels.ClassificationPnlCenterPredict.java

private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartActionPerformed

    //imate vec objekat instances i objekat naiveBayes u ovoj klasi
    //treba da izvucete ono sto je uetu u text fieldove preko liste i da napravite
    //objekat Instance (nema "s"). kad naravite objekat Instance samo ga dodate
    //na instances.add(  )..
    //onda koristite takav Instances i naiveBayes za evaluaciju i u textArea
    //ispisujete kojoj klasi pripada.. Sad ne trba matrica konfuzije potrebno
    //je da ispisete string kojoj klasi pripada
    //pogledajte klasu ClusterinPnlCenterPredict tu je odradjeno 90% onog sto se i ovde trazi
    //        instances.delete();
    for (int i = 0; i < textFields.size(); i++) {
        String text = textFields.get(i).getText().trim();

        //prekace prazna pollja jer za klasterizaciju znaci da se ona ignorisu
        //to za klasifikaciju nije slucaj
        if (!text.equals("")) {

            if (instances.attribute(i).isNominal()) {
                boolean correct = false;
                for (int j = 0; j < instances.attribute(i).numValues(); j++) {
                    if (text.equals(instances.attribute(i).value(j))) {
                        correct = true;//from   w  w w .  j av  a  2  s .  c  o m
                    }
                }
                if (!correct) {
                    JOptionPane.showMessageDialog(this,
                            "Incorrect format for attribute " + instances.attribute(i).name());
                    break;
                }
            }

            if (instances.attribute(i).isNumeric()) {
                try {
                    double value = Double.parseDouble(text);
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(this,
                            "Incorrect format for attribute " + instances.attribute(i).name());
                    break;
                }
            }

        }
    }

    int numAttributes = instances.numAttributes();

    Instance instance = new Instance(numAttributes);

    for (int i = 0; i < textFields.size(); i++) {
        String text = textFields.get(i).getText().trim();

        try {
            double value = Double.parseDouble(text);
            instance.setValue(i, value);

        } catch (Exception e) {
            instance.setValue(i, text);
        }
    }

    String value = instances.attribute(numAttributes - 1).value(0);
    Attribute Att = instances.attribute(numAttributes - 1);

    instance.setValue(Att, value);
    //        instances.delete();
    //        instance.setValue((numAttributes - 1), instances.attribute(numAttributes - 1).value(0) );

    instances.add(instance);

    double[][] matrix = null;

    System.out.println(instances);
    System.out.println(naiveBayes);

    try {

        //                instances.setClassIndex(instances.numAttributes() - 1);
        Evaluation eval = new Evaluation(instances);

        eval.evaluateModel(naiveBayes, instances);

        textArea.setText(eval.toMatrixString());
        matrix = eval.confusionMatrix();

    } catch (Exception ex) {
        System.out.println("Greska: " + ex);
    }

    double[] array = new double[matrix.length];

    for (int i = 0; i < array.length; i++) {

        double sum = 0;
        for (int j = 0; j < array.length; j++) {

            sum = sum + matrix[j][i];

        }
        array[i] = sum;

    }

    String className = null;
    for (int i = 0; i < array.length; i++) {
        if (array[i] == 1) {
            className = instances.attribute(numAttributes - 1).value(i);
        }
    }

    textArea.setText("This instance belongs to class: \n\n== " + className + " ==");

    instances.delete();
}

From source file:view.centerPanels.ClusteringPredictPnlCenter.java

private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartActionPerformed

    Instances test = new Instances(Data.getInstance().getInstances());
    test.delete();//  w w w. j a  v a  2  s  . co  m

    //proverava da li su dobro unete vrednosti
    //ako nesto nije doro uneseno nekaa iskoci JoptionPane
    //sta je lose uneseno, naziv aributa recimo
    for (int i = 0; i < fields.size(); i++) {
        String text = fields.get(i).getText().trim();

        //prekace prazna pollja jer za klasterizaciju znaci da se ona ignorisu
        //to za klasifikaciju nije slucaj
        if (!text.equals("")) {

            if (test.attribute(i).isNominal()) {
                boolean correct = false;
                for (int j = 0; j < test.attribute(i).numValues(); j++) {
                    if (text.equals(test.attribute(i).value(j))) {
                        correct = true;
                    }
                }
                if (!correct) {
                    JOptionPane.showMessageDialog(this,
                            "Incorrect format for attribute " + test.attribute(i).name());
                    break;
                }
            }

            if (test.attribute(i).isNumeric()) {
                try {
                    double value = Double.parseDouble(text);
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(this,
                            "Incorrect format for attribute " + test.attribute(i).name());
                    break;
                }
            }

        }
    }

    int numAttributes = test.numAttributes();

    Instance instance = new Instance(numAttributes);

    //ovaj remove je potreban samo zaklasterizaciju
    String remove = "";

    boolean hasRemove = false;
    for (int i = 0; i < fields.size(); i++) {
        String text = fields.get(i).getText().trim();

        //vama ne sme da se pojavi prazan string
        if (text.equals("")) {
            remove = remove + (i + 1) + ",";
            hasRemove = true;
        } else {
            try {
                double value = Double.parseDouble(text);
                instance.setValue(i, value);

            } catch (Exception e) {

                instance.setValue(i, text);
            }
        }

    }
    if (hasRemove) {
        remove = remove.substring(0, remove.length() - 1);
    }

    //meni se InstanceS zove test a vama instances, ovako se dodaje ta jedna instanca
    test.add(instance);
    //sad radite vasu evaluaciju ovo je klaserizacija ostalo

    Remove removeFilter = new Remove();
    removeFilter.setAttributeIndices(remove);

    FilteredClusterer filteredClusterer = new FilteredClusterer();
    try {

        filteredClusterer.setClusterer(kMeans);
        filteredClusterer.setFilter(removeFilter);
        filteredClusterer.buildClusterer(Data.getInstance().getInstances());

    } catch (Exception e) {

    }

    ClusterEvaluation eval = new ClusterEvaluation();
    eval.setClusterer(filteredClusterer);
    try {
        eval.evaluateClusterer(test);
    } catch (Exception ex) {
        Logger.getLogger(ClusteringPredictPnlCenter.class.getName()).log(Level.SEVERE, null, ex);
    }

    String[] results = eval.clusterResultsToString().split("\n");

    String cluster = results[results.length - 1].split(" ")[0];

    textAreaResult.setText("This instance belongs to \ncluster number:  " + cluster + ".\n\n"
            + "Take a look on visualization \nfor better feeleing about \nthis instance");

    test.delete();

}