Example usage for weka.core Instance setDataset

List of usage examples for weka.core Instance setDataset

Introduction

In this page you can find the example usage for weka.core Instance setDataset.

Prototype

public void setDataset(Instances instances);

Source Link

Document

Sets the reference to the dataset.

Usage

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;
}