List of usage examples for weka.core Instance setDataset
public void setDataset(Instances instances);
From source file:adams.data.instances.AbstractInstanceGenerator.java
License:Open Source License
/** * For adding IDs, notes, additional fields to the data. * * @param data the input data//w ww. j a v a 2s. co m * @param inst the generated instance * @return the processed instance */ protected Instance postProcessOutput(T data, Instance inst) { Instance result; double[] values; int index; Report report; values = inst.toDoubleArray(); report = data.getReport(); if (m_AddDatabaseID) { index = m_OutputHeader.attribute(ArffUtils.getDBIDName()).index(); values[index] = report.getDatabaseID(); } result = new DenseInstance(1.0, values); result.setDataset(m_OutputHeader); return result; }
From source file:adams.flow.transformer.WekaInstanceDumper.java
License:Open Source License
/** * Executes the flow item.//from w w w . j ava 2s. c o m * * @return null if everything is fine, otherwise error message */ @Override protected String doExecute() { String result; Instance inst; Instances newHeader; double[] values; boolean append; ArrayList<Attribute> atts; int i; result = null; if (m_InputToken.getPayload() instanceof Instance) { inst = (Instance) m_InputToken.getPayload(); // get header and optionally compare it to previous (to start a new // output file) newHeader = inst.dataset(); } else { values = (double[]) m_InputToken.getPayload(); // create artificial dataset header atts = new ArrayList<>(); for (i = 0; i < values.length; i++) atts.add(new Attribute("att_" + (i + 1))); newHeader = new Instances(getName(), atts, 0); inst = new DenseInstance(1.0, values); inst.setDataset(newHeader); } append = true; if (m_Header == null) { m_Header = new Instances(newHeader, 0); if (!m_KeepExisting) append = false; } else { if (m_CheckHeader) { if (!m_Header.equalHeaders(newHeader)) { m_Counter++; m_Header = new Instances(newHeader, 0); append = false; } } } if (!append) FileUtils.delete(createFilename(inst.dataset()).getAbsolutePath()); // buffer data and write to disk if necessary m_Buffer.add(inst); if (m_Buffer.size() >= m_BufferSize) result = writeToDisk(append); // broadcast name if (result == null) m_OutputToken = new Token(createFilename(inst.dataset()).getAbsolutePath()); return result; }
From source file:adams.flow.transformer.WekaNewInstance.java
License:Open Source License
/** * Executes the flow item./* www . j a v a 2s . com*/ * * @return null if everything is fine, otherwise error message */ @Override protected String doExecute() { String result; Instances data; Instance inst; Class cls; Constructor constr; result = null; data = (Instances) m_InputToken.getPayload(); try { cls = m_InstanceClass.classValue(); constr = cls.getConstructor(new Class[] { Integer.TYPE }); inst = (Instance) constr.newInstance(new Object[] { data.numAttributes() }); inst.setDataset(data); m_OutputToken = new Token(inst); } catch (Exception e) { result = handleException("Failed to create new instance: ", e); } return result; }
From source file:adams.ml.data.WekaConverter.java
License:Open Source License
/** * Turns an ADAMS dataset row into a Weka Instance. * * @param data the dataset to use as template * @param row the row to convert/*w w w. j av a2 s . co m*/ * @return the generated instance * @throws Exception if conversion fails */ public static Instance toInstance(Instances data, Row row) throws Exception { Instance result; double[] values; int i; Cell cell; Attribute att; values = new double[data.numAttributes()]; for (i = 0; i < data.numAttributes(); i++) { values[i] = Utils.missingValue(); if (!row.hasCell(i)) continue; cell = row.getCell(i); if (cell.isMissing()) continue; att = data.attribute(i); switch (att.type()) { case Attribute.NUMERIC: values[i] = cell.toDouble(); break; case Attribute.DATE: values[i] = cell.toAnyDateType().getTime(); break; case Attribute.NOMINAL: values[i] = att.indexOfValue(cell.getContent()); break; case Attribute.STRING: values[i] = att.addStringValue(cell.getContent()); break; default: throw new Exception("Unhandled Weka attribute type: " + Attribute.typeToString(att)); } } result = new DenseInstance(1.0, values); result.setDataset(data); return result; }
From source file:ant.Game.java
private char keyFromWeka(int classifier) { char key = W; Instance i = new Instance(m_ant.getNumAttributes() + 1); i.setDataset(m_data); for (int j = 0; j < i.numAttributes() - 1; ++j) { i.setValue(new Attribute(Integer.toString(j), j), see(j)); }/*from w ww .j a v a2 s . c om*/ i.setClassValue(1); double p = -1; try { p = m_wrapper10x1.classifyInstance(i); } catch (Exception ex) { Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex); } switch ((int) p) { case 0: key = W; break; case 1: key = A; break; case 2: key = S; break; case 3: key = D; break; default: System.err.println("Unexpected classifier output!"); break; } return key; }
From source file:aprendizadodemaquina.classificadores.ClassificadorDT.java
License:Open Source License
/** * Retorna a classificao de uma instncia de relao. * //from w ww .j a v a 2 s . c o m * @param instance Instncia de relao criada pelo objeto featurizador * @return Classe predita pelo classificador para a instncia fornecida */ public String classificar(Instance instance) { //System.out.println( "DEBUG: Classificando instncia " + instance ); instance.setDataset(dadosTreinamento); try { double pred = classificador.classifyInstance(instance); return dadosTreinamento.classAttribute().value((int) pred); } catch (Exception ex) { Logger.getLogger("ARS logger").log(Level.SEVERE, null, ex); } return "none"; }
From source file:at.aictopic1.sentimentanalysis.machinelearning.impl.TwitterClassifer.java
public Integer classify(Tweet[] tweets) { // TEST//from w w w. j a v a 2 s.co m // Generate two tweet examples Tweet exOne = new Tweet("This is good and fantastic"); exOne.setPreprocessedText("This is good and fantastic"); Tweet exTwo = new Tweet("Horribly, terribly bad and more"); exTwo.setPreprocessedText("Horribly, terribly bad and more"); Tweet exThree = new Tweet( "I want to update lj and read my friends list, but I\\'m groggy and sick and blargh."); exThree.setPreprocessedText( "I want to update lj and read my friends list, but I\\'m groggy and sick and blargh."); Tweet exFour = new Tweet("bad hate worst sick"); exFour.setPreprocessedText("bad hate worst sick"); tweets = new Tweet[] { exOne, exTwo, exThree, exFour }; // TEST // Load model // loadModel(); // Convert Tweet to Instance type // Get String Data // Create attributes for the Instances set Attribute twitter_id = new Attribute("twitter_id"); // Attribute body = new Attribute("body"); FastVector classVal = new FastVector(2); classVal.addElement("pos"); classVal.addElement("neg"); Attribute class_attr = new Attribute("class_attr", classVal); // Add them to a list FastVector attrVector = new FastVector(3); // attrVector.addElement(twitter_id); // attrVector.addElement(new Attribute("body", (FastVector) null)); // attrVector.addElement(class_attr); // Get the number of tweets and then create predictSet int numTweets = tweets.length; Enumeration structAttrs = dataStructure.enumerateAttributes(); // ArrayList<Attribute> attrList = new ArrayList<Attribute>(dataStructure.numAttributes()); while (structAttrs.hasMoreElements()) { attrVector.addElement((Attribute) structAttrs.nextElement()); } Instances predictSet = new Instances("predictInstances", attrVector, numTweets); // Instances predictSet = new Instances(dataStructure); predictSet.setClassIndex(2); // init prediction double prediction = -1; System.out.println("PredictSet matches source structure: " + predictSet.equalHeaders(dataStructure)); System.out.println("PredSet struct: " + predictSet.attribute(0)); System.out.println("PredSet struct: " + predictSet.attribute(1)); System.out.println("PredSet struct: " + predictSet.attribute(2)); // Array to return predictions //double[] tweetsClassified = new double[2][numTweets]; //List<Integer, Double> tweetsClass = new ArrayList<Integer, Double>(numTweets); for (int i = 0; i < numTweets; i++) { String content = (String) tweets[i].getPreprocessedText(); System.out.println("Tweet content: " + content); // attrList Instance tweetInstance = new Instance(predictSet.numAttributes()); tweetInstance.setDataset(predictSet); tweetInstance.setValue(predictSet.attribute(0), i); tweetInstance.setValue(predictSet.attribute(1), content); tweetInstance.setClassMissing(); predictSet.add(tweetInstance); try { // Apply string filter StringToWordVector filter = new StringToWordVector(); filter.setInputFormat(predictSet); Instances filteredPredictSet = Filter.useFilter(predictSet, filter); // Apply model prediction = trainedModel.classifyInstance(filteredPredictSet.instance(i)); filteredPredictSet.instance(i).setClassValue(prediction); System.out.println("Classification: " + filteredPredictSet.instance(i).toString()); System.out.println("Prediction: " + prediction); } catch (Exception ex) { Logger.getLogger(TwitterClassifer.class.getName()).log(Level.SEVERE, null, ex); } } return 0; }
From source file:at.tuflowgraphy.semanticapps.semdroid.DalvikBaseAnalyzer.java
License:Apache License
protected void addLastXWekaInstances(Instances instances, int numberOfInstances, List<Object> linkedObjects) { // TODO: use ResultEntry instead of List<Object> if (numberOfInstances <= 0) { return;//from www . j a v a2 s . c om } List<DActivationPatternPackage> dActivationPatternPackages = mAnalysisChain.getFinalLayers().get(0) .getResultAnalysisPackage().getActivationPatternPackages(); int counter = 0; for (DActivationPatternPackage dActivationPatternPackage : dActivationPatternPackages) { DActivationPattern activationPatternTemp = dActivationPatternPackage.getActivationPatterns().get(0); if (counter > 0) { throw new RuntimeException("More than one DActivationPatternPackage found!"); } counter++; for (int i = numberOfInstances - 1; i >= 0; i--) { DActivationPattern activationPattern = dActivationPatternPackage.getActivationPatterns() .get(dActivationPatternPackage.getActivationPatterns().size() - 1 - i); Instance instance = new Instance(activationPatternTemp.getRawPattern().length + 1); for (int j = 0; j < activationPattern.getRawPattern().length; j++) { instance.setValue(j, activationPattern.getRawPattern()[j]); } instances.add(instance); instance.setDataset(instances); if (linkedObjects != null) { DBasicMetaData d = activationPattern.getMetaData(); if (d instanceof DObjectLinkMetaData) { Object o = ((DObjectLinkMetaData) d).getLinkedObject(); linkedObjects.add(o); } else { throw new IllegalArgumentException( "Wrong metadata type attached! Must be DObjectLinkMetaData!"); } } } } }
From source file:at.tuflowgraphy.semanticapps.semdroid.DalvikBaseAnalyzer.java
License:Apache License
public Instances getWekaInstances() { Instances instances = null;/* w w w. j a v a2s . c om*/ List<DActivationPatternPackage> dActivationPatternPackages = mAnalysisChain.getFinalLayers().get(0) .getResultAnalysisPackage().getActivationPatternPackages(); int counter = 0; for (DActivationPatternPackage dActivationPatternPackage : dActivationPatternPackages) { if (counter > 0) { throw new RuntimeException("More than one DActivationPatternPackage found!"); } counter++; DActivationPattern activationPatternTemp = dActivationPatternPackage.getActivationPatterns().get(0); FastVector fvWekaAttributes = new FastVector(activationPatternTemp.getRawPattern().length); for (int j = 0; j < activationPatternTemp.getRawPattern().length; j++) { Attribute attribute = new Attribute(j + ""); fvWekaAttributes.addElement(attribute); } Set<String> labelSet = getLabelSet(dActivationPatternPackage); FastVector classValues = new FastVector(labelSet.size()); for (String label : labelSet) { classValues.addElement(label); } Attribute classAttribute = new Attribute("Class", classValues); fvWekaAttributes.addElement(classAttribute); instances = new Instances(mAnalysisConfig.getApplicationAnalysisName(), fvWekaAttributes, dActivationPatternPackage.getActivationPatterns().size()); instances.setClassIndex(instances.numAttributes() - 1); for (int i = 0; i < dActivationPatternPackage.getActivationPatterns().size(); i++) { DActivationPattern activationPattern = dActivationPatternPackage.getActivationPatterns().get(i); Instance instance = new Instance(fvWekaAttributes.size()); for (int j = 0; j < activationPattern.getRawPattern().length; j++) { instance.setValue((Attribute) fvWekaAttributes.elementAt(j), activationPattern.getRawPattern()[j]); } instance.setDataset(instances); DSimpleStringMetaData metadata = (DSimpleStringMetaData) activationPattern.getMetaData(); List<String> keys = metadata.getMetaDataKeys(); for (int k = 0; k < keys.size(); k++) { if (keys.get(k).equals(DalvikInputPlugin.TAG_LABEL)) { String label = metadata.getMetaDataEntries().get(k); instance.setClassValue(label); break; } } instances.add(instance); } } return instances; }
From source file:at.tuflowgraphy.semanticapps.semdroid.utils.ArffHelper.java
License:Apache License
public Instances getWekaInstances(AnalysisChain analysisChain, String name) { Instances instances = null;/*from w w w . java 2 s .c o m*/ List<DActivationPatternPackage> dActivationPatternPackages = analysisChain.getFinalLayers().get(0) .getResultAnalysisPackage().getActivationPatternPackages(); int counter = 0; for (DActivationPatternPackage dActivationPatternPackage : dActivationPatternPackages) { if (counter > 0) { // String resultFileName = arffFile.getName(); // String newName = resultFileName.split("_")[0]; // int index = resultFileName.indexOf("_"); // newName += "-MISSING-" + counter + "-" // + resultFileName.substring(index); // arffFileToWriteTo = new File(arffFile.getParentFile(), newName); System.err.println("ERROR: Multiple activation pattern packages found! Should not happen..."); } counter++; DActivationPattern activationPatternTemp = dActivationPatternPackage.getActivationPatterns().get(0); FastVector fvWekaAttributes = new FastVector(activationPatternTemp.getRawPattern().length); for (int j = 0; j < activationPatternTemp.getRawPattern().length; j++) { Attribute attribute = new Attribute(j + ""); fvWekaAttributes.addElement(attribute); } Set<String> labelSet = getLabelSet(dActivationPatternPackage); FastVector classValues = new FastVector(labelSet.size()); for (String label : labelSet) { classValues.addElement(label); } Attribute classAttribute = new Attribute("Class", classValues); fvWekaAttributes.addElement(classAttribute); instances = new Instances(name, fvWekaAttributes, dActivationPatternPackage.getActivationPatterns().size()); instances.setClassIndex(instances.numAttributes() - 1); for (int i = 0; i < dActivationPatternPackage.getActivationPatterns().size(); i++) { DActivationPattern activationPattern = dActivationPatternPackage.getActivationPatterns().get(i); Instance instance = new Instance(fvWekaAttributes.size()); for (int j = 0; j < activationPattern.getRawPattern().length; j++) { instance.setValue((Attribute) fvWekaAttributes.elementAt(j), activationPattern.getRawPattern()[j]); } instance.setDataset(instances); DSimpleStringMetaData metadata = (DSimpleStringMetaData) activationPattern.getMetaData(); List<String> keys = metadata.getMetaDataKeys(); for (int k = 0; k < keys.size(); k++) { if (keys.get(k).equals(DalvikInputPlugin.TAG_LABEL)) { String label = metadata.getMetaDataEntries().get(k); // TODO: dynamically add new labels to instances so that getLabelSet for-loop is not required // System.out.println(label); // if(!labelSet.contains(label)) { // labelSet.add(label); // // classValues.addElement(label); // classAttribute.addStringValue(label); // instances.attribute(instances.classIndex()).addValue(label); // System.out.println("ADDED " + label); // } instance.setClassValue(label); // TODO: only first class value used break; } } instances.add(instance); } } return instances; }