Example usage for weka.core Instances deleteAttributeAt

List of usage examples for weka.core Instances deleteAttributeAt

Introduction

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

Prototype



public void deleteAttributeAt(int position) 

Source Link

Document

Deletes an attribute at the given position (0 to numAttributes() - 1).

Usage

From source file:milk.classifiers.SimpleMI.java

License:Open Source License

public Instances transform(Exemplars train) throws Exception {

     Instances data = new Instances(m_Attributes);// Data to learn a model   
     data.deleteAttributeAt(m_IdIndex);// ID attribute useless   
     Instances dataset = new Instances(data, 0);
     Instance template = new Instance(dataset.numAttributes());
     template.setDataset(dataset);/*from  ww w.  ja va2 s. c  om*/
     double N = train.numExemplars(); // Number of exemplars

     for (int i = 0; i < N; i++) {
         Exemplar exi = train.exemplar(i);
         Instances insts = exi.getInstances();
         int attIdx = 0;
         Instance newIns = new Instance(template);
         newIns.setDataset(dataset);
         for (int j = 0; j < insts.numAttributes(); j++) {
             if ((j == m_IdIndex) || (j == m_ClassIndex))
                 continue;
             double value;
             if (m_TransformMethod == 1) {
                 value = insts.meanOrMode(j);
             } else {
                 double[] minimax = minimax(insts, j);
                 value = (minimax[0] + minimax[1]) / 2.0;
             }
             newIns.setValue(attIdx++, value);
         }
         newIns.setClassValue(exi.classValue());
         data.add(newIns);
     }

     return data;
 }

From source file:miRdup.WekaModule.java

License:Open Source License

public static void testModel(File testarff, String predictionsFile, String classifier, boolean predictMiRNA) {
    System.out.println("Testing model on " + predictionsFile + " adapted in " + testarff
            + ". Submitted to model " + classifier);

    try {/*from   w  w w. j  a va2 s  .  co  m*/
        //add predictions sequences to object
        ArrayList<MirnaObject> alobj = new ArrayList<MirnaObject>();
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(predictionsFile + ".folded"));
        } catch (FileNotFoundException fileNotFoundException) {
            br = new BufferedReader(new FileReader(predictionsFile));
        }
        BufferedReader br2 = new BufferedReader(new FileReader(testarff));
        String line2 = br2.readLine();
        while (!line2.startsWith("@data")) {
            line2 = br2.readLine();
        }
        String line = " ";
        int cpt = 0;
        while (br.ready()) {
            line = br.readLine();
            line2 = br2.readLine();
            String[] tab = line.split("\t");
            MirnaObject m = new MirnaObject();
            m.setArff(line2);
            m.setId(cpt++);
            m.setIdName(tab[0]);
            m.setMatureSequence(tab[1]);
            m.setPrecursorSequence(tab[2]);
            m.setStructure(tab[3]);
            alobj.add(m);
        }
        br.close();
        br2.close();

        // load data
        DataSource source = new DataSource(testarff.toString());
        Instances data = source.getDataSet();
        if (data.classIndex() == -1) {
            data.setClassIndex(data.numAttributes() - 1);
        }
        //remove ID row
        data.deleteAttributeAt(0);
        //load model
        Classifier model = (Classifier) weka.core.SerializationHelper.read(classifier);

        // evaluate dataset on the model
        Evaluation eval = new Evaluation(data);

        eval.evaluateModel(model, data);

        FastVector fv = eval.predictions();

        // output
        PrintWriter pw = new PrintWriter(new FileWriter(predictionsFile + "." + classifier + ".miRdup.txt"));
        PrintWriter pwt = new PrintWriter(
                new FileWriter(predictionsFile + "." + classifier + ".miRdup.tab.txt"));
        PrintWriter pwout = new PrintWriter(
                new FileWriter(predictionsFile + "." + classifier + ".miRdupOutput.txt"));

        for (int i = 0; i < fv.size(); i++) {
            //System.out.println(fv.elementAt(i).toString());
            String[] tab = fv.elementAt(i).toString().split(" ");
            int actual = Integer.valueOf(tab[1].substring(0, 1));
            int predicted = Integer.valueOf(tab[2].substring(0, 1));
            double score = 0.0;
            boolean validated = false;
            if (actual == predicted) { //case validated
                int s = tab[4].length();
                try {
                    score = Double.valueOf(tab[4]);
                    //score = Double.valueOf(tab[4].substring(0, s - 1));
                } catch (NumberFormatException numberFormatException) {
                    score = 0.0;
                }

                validated = true;
            } else {// case not validated
                int s = tab[5].length();
                try {
                    score = Double.valueOf(tab[5]);
                    //score = Double.valueOf(tab[5].substring(0, s - 1));
                } catch (NumberFormatException numberFormatException) {
                    score = 0.0;
                }
                validated = false;
            }
            MirnaObject m = alobj.get(i);
            m.setActual(actual);
            m.setPredicted(predicted);
            m.setScore(score);
            m.setValidated(validated);
            m.setNeedPrediction(predictMiRNA);
            String predictionMiRNA = "";
            if (predictMiRNA && validated == false) {
                predictionMiRNA = miRdupPredictor.Predictor.predictionBySequence(m.getPrecursorSequence(),
                        classifier, classifier + ".miRdupPrediction.txt");
                try {
                    m.setPredictedmiRNA(predictionMiRNA.split(",")[0]);
                    m.setPredictedmiRNAstar(predictionMiRNA.split(",")[1]);
                } catch (Exception e) {
                    m.setPredictedmiRNA(predictionMiRNA);
                    m.setPredictedmiRNAstar(predictionMiRNA);
                }
            }

            pw.println(m.toStringFullPredictions());
            pwt.println(m.toStringPredictions());
            if (i % 100 == 0) {
                pw.flush();
                pwt.flush();
            }
        }

        //System.out.println(eval.toSummaryString("\nSummary results of predictions\n======\n", false));
        String[] out = eval.toSummaryString("\nSummary results of predictions\n======\n", false).split("\n");
        String info = out[0] + "\n" + out[1] + "\n" + out[2] + "\n" + out[4] + "\n" + out[5] + "\n" + out[6]
                + "\n" + out[7] + "\n" + out[11] + "\n";
        System.out.println(info);
        //System.out.println("Predicted position of the miRNA by miRdup:"+predictionMiRNA);
        pwout.println(
                "File " + predictionsFile + " adapted in " + testarff + " submitted to model " + classifier);
        pwout.println(info);

        pw.flush();
        pw.close();
        pwt.flush();
        pwt.close();
        pwout.flush();
        pwout.close();

        System.out.println("Results in " + predictionsFile + "." + classifier + ".miRdup.txt");

        // draw curve
        //rocCurve(eval);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

From source file:moa.streams.generators.multilabel.MetaMultilabelGenerator.java

License:Open Source License

/**
 * GenerateMultilabelHeader./*w ww . j  a v a2s .c o  m*/
 *
 * @param   si   single-label Instances
 */
protected MultilabelInstancesHeader generateMultilabelHeader(Instances si) {
    Instances mi = new Instances(si, 0, 0);
    mi.setClassIndex(-1);
    mi.deleteAttributeAt(mi.numAttributes() - 1);
    FastVector bfv = new FastVector();
    bfv.addElement("0");
    bfv.addElement("1");
    for (int i = 0; i < this.m_L; i++) {
        mi.insertAttributeAt(new Attribute("class" + i, bfv), i);
    }
    this.multilabelStreamTemplate = mi;
    this.multilabelStreamTemplate.setRelationName("SYN_Z" + this.labelCardinalityOption.getValue() + "L"
            + this.m_L + "X" + m_A + "S" + metaRandomSeedOption.getValue() + ": -C " + this.m_L);
    this.multilabelStreamTemplate.setClassIndex(this.m_L);
    return new MultilabelInstancesHeader(multilabelStreamTemplate, m_L);
}

From source file:my.randomforestui.RandomForestUI.java

public static Instances chromosome(Instances input, boolean bits[]) {
    Instances temp = input;

    if (temp.classIndex() == -1)
        temp.setClassIndex(temp.numAttributes() - 1);

    for (int i = 5; i >= 0; i--) {
        if (bits[i] == false) {
            temp.deleteAttributeAt(i);
        }//from www.j  av a 2  s. c  om
    }
    return temp;
}

From source file:NaiveBayesPckge.NaiveBayesMain.java

public static void main(String[] args) {
    Instances instance;
    Instances instanceTest;/*from www  .  j  a  va 2  s . co m*/
    String filterr;
    Scanner scan = new Scanner(System.in);
    InputNaiveBayes nb = new InputNaiveBayes();
    String inputWeka;

    System.out.println("   Welcome to the Naive Bayes System");
    System.out.println("========================================");
    System.out.println("");

    System.out.print("Now input Train .arff path file : ");
    //        inputWeka = scan.nextLine();
    System.out.print("Now input Test .arff path file : ");
    //        String inputTest = scan.nextLine();
    inputWeka = "tes/student-train.arff";
    String inputTest = "tes/student-mat-test.arff";
    //        inputWeka = "zdata/tennis.arff";
    //        String inputTest = "zdata/tennis.arff";
    //        inputWeka = "tes/mush.arff";
    //        String inputTest = "tes/mush_test.arff";
    //        inputWeka = "zdata/iris.arff";
    //        String inputTest = "zdata/iris.arff";

    instance = nb.readFileUseWeka(inputWeka);
    instanceTest = nb.readFileUseWeka(inputTest);

    try {
        System.out.println("Do you want to use filter ? Please choose one : ");
        System.out.println("  1. Numeric To Nominal");
        System.out.println("  2. Discretize");
        System.out.println("  3. Don't use filter");
        System.out.print("Your answer : ");
        filterr = scan.nextLine();
        while (!filterr.equals("1") && !filterr.equals("2") && !filterr.equals("3")) {
            System.out.println("Type the number please : ");
            System.out.println("  1. Nominal To Numeric");
            System.out.println("  2. Discretize");
            System.out.println("  3. Don't use filter");
            System.out.print("Your answer : ");
            filterr = scan.nextLine();
        }
        if (filterr.equals("1")) {
            instance = useFilterNominalToNumeric(instance);
            instanceTest = useFilterNominalToNumeric(instanceTest);
        } else if (filterr.equals("2")) {
            instance = useFilterDiscritize(instance);
            instanceTest = useFilterDiscritize(instanceTest);
        } else {
            System.out.println("> Data is not filtered\n");
        }

    } catch (Exception e) {
        System.out.println("Problem when use filter : " + e);
    }
    //        
    System.out.println("delete index 26 : DALC");
    instance.deleteAttributeAt(26);
    instanceTest.deleteAttributeAt(26);

    String choice = firstQuestion(instance);
    if (choice.equals("2")) {
        naive = new NaiveBayesCode(instance.numAttributes());
        try {
            int trainSize = (int) Math.round(instance.numInstances() * 0.8);
            int testSize = instanceTest.numInstances() - trainSize;
            instance = new Instances(instance, 0, trainSize);
            instanceTest = new Instances(instanceTest, trainSize, testSize);
            //                instance.setClassIndex(0);
            //                instanceTest.setClassIndex(0);
            naive.run(instance);
            naive.buildClassifier(instanceTest);
        } catch (Exception e) {
            System.out.println("Problem when build classifier : " + e);
        }

        try {
            printEvaluationSplit(instance);
            lastQuestion();
        } catch (Exception e) {
            System.out.println("Problem on evaluation : " + e);
        }
    }

    //        goodByeMessage();
    //        try {
    //            addNewInstance(instance);
    //        } catch (Exception ex) {
    //            Logger.getLogger(NaiveBayesMain.class.getName()).log(Level.SEVERE, null, ex);
    //        }
}

From source file:nl.bioinf.roelen.thema11.classifier_tools.BoundaryClassifier.java

License:Open Source License

/**
 * method to build a classifier/*from  www  .j av  a 2  s . c o m*/
 * @param fileLocation the arrf file our attributes are in
 * @param method the method to use for building our classifier
 * @return the classifier object that was built
 */
public static Classifier build(String fileLocation, String method) {
    //init classifier object
    Classifier classifier;
    classifier = null;

    try {
        //get data
        ConverterUtils.DataSource source = new ConverterUtils.DataSource(fileLocation);
        //SET DATA AND OPTIONS
        Instances data = source.getDataSet();

        //remove the name and position entries, these are not important for classifying
        data.deleteAttributeAt(data.numAttributes() - 2);
        data.deleteAttributeAt(data.numAttributes() - 2);
        data.setClassIndex(data.numAttributes() - 1);

        //prepare data for classifying
        String[] options = new String[1];
        //unpruned
        options[0] = "-U"; // unpruned tree
        //see what method was given
        switch (method.toUpperCase()) {
        case "J48":
            //Build J48 classifier
            classifier = new J48(); // new instance of tree
            break;
        case "OneR":
            //Build OneR classifier
            classifier = new OneR();
            break;
        case "ZeroR":
            //build (useless) ZeroR classifier
            classifier = new ZeroR();
            break;
        default:
            //default is building OneR
            classifier = new OneR();
            break;
        }
        //set the options and build that thing
        classifier.setOptions(options); // set the options
        classifier.buildClassifier(data); // build classifier

    } catch (Exception ex) {
        Logger.getLogger(BoundaryClassifier.class.getName()).log(Level.SEVERE, null, ex);
    }
    return classifier;
}

From source file:org.knime.knip.suise.node.boundarymodel.contourdata.IRI.java

License:Open Source License

private Instances toSingleInstanceDataset(Instances miData, Instances flatData) throws Exception {
    MultiInstanceToPropositional convertToProp = new MultiInstanceToPropositional();

    convertToProp.setInputFormat(miData);

    for (int i = 0; i < miData.numInstances(); i++) {
        convertToProp.input(miData.instance(i));
    }/*ww  w .  j a va  2 s. com*/
    convertToProp.batchFinished();

    if (flatData == null) {
        flatData = convertToProp.getOutputFormat();
        flatData.deleteAttributeAt(0); // remove the bag index attribute

    }

    Instance processed;
    while ((processed = convertToProp.output()) != null) {
        processed.setDataset(null);
        processed.deleteAttributeAt(0); // remove the bag index attribute
        flatData.add(processed);
    }

    // remove class attribute
    // flatData.setClassIndex(-1);
    // flatData.deleteAttributeAt(flatData.numAttributes() - 1);

    // set weights
    int instanceIdx = 0;
    for (Instance bag : miData) {
        for (Instance instance : bag.relationalValue(1)) {
            flatData.get(instanceIdx).setWeight(instance.weight());
            instanceIdx++;
        }
    }
    return flatData;
}

From source file:org.openml.webapplication.features.FantailConnector.java

License:Open Source License

private boolean extractFeatures(Integer did, Integer interval_size) throws Exception {
    Conversion.log("OK", "Extract Features", "Start extracting features for dataset: " + did);

    List<String> qualitiesAvailable = Arrays.asList(apiconnector.dataQualities(did).getQualityNames());

    // TODO: initialize this properly!!!!!!
    streamCharacterizers = new StreamCharacterizer[1];
    streamCharacterizers[0] = new ChangeDetectors(interval_size);

    DataSetDescription dsd = apiconnector.dataGet(did);

    Conversion.log("OK", "Extract Features", "Start downloading dataset: " + did);

    Instances dataset = new Instances(new FileReader(dsd.getDataset(apiconnector.getApiKey())));

    dataset.setClass(dataset.attribute(dsd.getDefault_target_attribute()));
    if (dsd.getRow_id_attribute() != null) {
        if (dataset.attribute(dsd.getRow_id_attribute()) != null) {
            dataset.deleteAttributeAt(dataset.attribute(dsd.getRow_id_attribute()).index());
        }/*w  w  w  .  j  a  v a 2  s. co  m*/
    }
    if (dsd.getIgnore_attribute() != null) {
        for (String att : dsd.getIgnore_attribute()) {
            if (dataset.attribute(att) != null) {
                dataset.deleteAttributeAt(dataset.attribute(att).index());
            }
        }
    }

    // first run stream characterizers
    for (StreamCharacterizer sc : streamCharacterizers) {

        if (qualitiesAvailable.containsAll(Arrays.asList(sc.getIDs())) == false) {
            Conversion.log("OK", "Extract Features", "Running Stream Characterizers (full data)");
            sc.characterize(dataset);
        } else {
            Conversion.log("OK", "Extract Features",
                    "Skipping Stream Characterizers (full data) - already in database");
        }
    }

    List<Quality> qualities = new ArrayList<DataQuality.Quality>();
    if (interval_size != null) {
        Conversion.log("OK", "Extract Features", "Running Batch Characterizers (partial data)");

        for (int i = 0; i < dataset.numInstances(); i += interval_size) {
            if (apiconnector.getVerboselevel() >= Constants.VERBOSE_LEVEL_ARFF) {
                Conversion.log("OK", "FantailConnector", "Starting window [" + i + "," + (i + interval_size)
                        + "> (did = " + did + ",total size = " + dataset.numInstances() + ")");
            }
            qualities.addAll(datasetCharacteristics(dataset, i, interval_size, null));

            for (StreamCharacterizer sc : streamCharacterizers) {
                qualities.addAll(hashMaptoList(sc.interval(i), i, interval_size));
            }
        }

    } else {
        Conversion.log("OK", "Extract Features",
                "Running Batch Characterizers (full data, might take a while)");
        qualities.addAll(datasetCharacteristics(dataset, null, null, qualitiesAvailable));
        for (StreamCharacterizer sc : streamCharacterizers) {
            Map<String, Double> streamqualities = sc.global();
            if (streamqualities != null) {
                qualities.addAll(hashMaptoList(streamqualities, null, null));
            }
        }
    }
    Conversion.log("OK", "Extract Features", "Done generating features, start wrapping up");
    DataQuality dq = new DataQuality(did, qualities.toArray(new Quality[qualities.size()]));
    String strQualities = xstream.toXML(dq);

    DataQualityUpload dqu = apiconnector
            .dataQualitiesUpload(Conversion.stringToTempFile(strQualities, "qualities_did_" + did, "xml"));
    Conversion.log("OK", "Extract Features", "DONE: " + dqu.getDid());

    return true;
}

From source file:org.opentox.jaqpot3.qsar.predictor.MissingValueFilterPredictor.java

License:Open Source License

@Override
public Instances predict(Instances data) throws JaqpotException {
    HashSet<String> ignoredUris = (HashSet<String>) model.getActualModel().getSerializableActualModel();
    for (String attribute2Bignored : ignoredUris) {
        Attribute attr = data.attribute(attribute2Bignored);
        if (attr != null) {
            data.deleteAttributeAt(attr.index());
        }/* w  w w.  ja  v a  2s.  c om*/
    }
    updateFeatureMap(model);
    weka.filters.unsupervised.attribute.ReplaceMissingValues replacer = new ReplaceMissingValues();

    try {
        replacer.setInputFormat(data);
    } catch (Exception ex) {
        Logger.getLogger(MissingValueFilterPredictor.class.getName()).log(Level.SEVERE, null, ex);
        throw new JaqpotException(ex);
    }

    Iterator<String> features = featureToMVH.keySet().iterator();
    String nextFeature = null;
    Attribute currentAttribute = null;
    while (features.hasNext()) {
        nextFeature = features.next();
        currentAttribute = data.attribute(nextFeature);
        if (currentAttribute == null) {
            throw new JaqpotException(
                    "The dataset you provided does not contain the necessary " + "feature : " + nextFeature);
        }
        data.renameAttribute(currentAttribute, featureToMVH.get(nextFeature));
    }

    return data;
}

From source file:org.opentox.jaqpot3.qsar.predictor.ScalingPredictor.java

License:Open Source License

@Override
public Instances predict(Instances inputData) throws JaqpotException {
    try {//from w w  w .j a  va 2  s . co m
        ScalingModel actualModel = (ScalingModel) model.getActualModel();

        Map<String, Double> mins = actualModel.getMinVals2();
        Map<String, Double> maxs = actualModel.getMaxVals2();

        Attribute attr;
        for (String attrName : actualModel.getExcludeAttributesDoA()) {
            attr = inputData.attribute(attrName);
            if (attr != null) {
                inputData.deleteAttributeAt(attr.index());
            }
        }

        updateFeatureMap(model);

        //int Nattr = inputData.numAttributes();
        int Ninst = inputData.numInstances();

        Iterator<String> features = featureToScaled.keySet().iterator();

        String nextFeature = null;
        Attribute currentAttribute = null;
        double currentMin = 0;
        double currentMax = 1;
        double currentValue = 0;

        while (features.hasNext()) {
            nextFeature = features.next();
            currentMin = mins.get(nextFeature);
            currentMax = maxs.get(nextFeature);
            currentAttribute = inputData.attribute(nextFeature);
            for (int iInst = 0; iInst < Ninst; iInst++) {
                currentValue = inputData.instance(iInst).value(currentAttribute);
                currentValue = (currentValue - currentMin) / (currentMax - currentMin);
                inputData.instance(iInst).setValue(currentAttribute, currentValue);
            }
        }

        /* Rename Attributes in `inputData`*/
        features = featureToScaled.keySet().iterator();
        while (features.hasNext()) {
            nextFeature = features.next();
            currentAttribute = inputData.attribute(nextFeature);
            if (currentAttribute == null) {
                throw new JaqpotException("The dataset you provided does not contain the necessary "
                        + "feature : " + nextFeature);
            }
            inputData.renameAttribute(currentAttribute, featureToScaled.get(nextFeature));
        }

        return inputData;

    } catch (Throwable thr) {
        thr.printStackTrace();

    }
    return null;
}