List of usage examples for weka.core Instances deleteAttributeAt
public void deleteAttributeAt(int position)
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; }