Example usage for weka.core Instances setClassIndex

List of usage examples for weka.core Instances setClassIndex

Introduction

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

Prototype

public void setClassIndex(int classIndex) 

Source Link

Document

Sets the class index of the set.

Usage

From source file:at.tuflowgraphy.semanticapps.semdroid.DalvikBaseAnalyzer.java

License:Apache License

public Instances getWekaInstances() {
    Instances instances = null;
    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!");
        }/*from   w w w . j a va  2  s . com*/
        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.DalvikBaseAnalyzer.java

License:Apache License

protected Instances generateInstancesHeader(DActivationPatternPackage dActivationPatternPackage) {
    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);
    }/*  ww w  .  ja  v  a  2 s . c  o m*/

    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 instances = new Instances(mAnalysisConfig.getApplicationAnalysisName(), fvWekaAttributes,
            dActivationPatternPackage.getActivationPatterns().size());
    instances.setClassIndex(instances.numAttributes() - 1);
    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;
    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...");
        }/*from   w  w  w.  ja v a2 s. c o m*/
        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;
}

From source file:au.edu.usyd.it.yangpy.sampling.BPSO.java

License:Open Source License

/**
 * the target function in fitness form//from w  w w  .  ja v  a  2 s.c  om
 * 
 * @return   classification accuracy
 */
public double ensembleClassify() {
    double fitnessValue = 0.0;
    double classifiersScore = 0.0;

    /* load in the modified data set */
    try {
        Instances reducedSet = new Instances(new BufferedReader(new FileReader("reduced.arff")));
        reducedSet.setClassIndex(reducedSet.numAttributes() - 1);

        // calculating the evaluation values using each classifier respectively
        if (verbose == true) {
            System.out.println();
            System.out.println(" |----------J4.8-----------|");
            System.out.println(" |            |            |");
        }
        J48 tree = new J48();
        classifiersScore = classify(tree, reducedSet, internalTest);
        fitnessValue += classifiersScore;

        if (verbose == true) {
            System.out.println();
            System.out.println(" |-----3NearestNeighbor----|");
            System.out.println(" |            |            |");
        }
        IBk nn3 = new IBk(3);
        classifiersScore = classify(nn3, reducedSet, internalTest);
        fitnessValue += classifiersScore;

        if (verbose == true) {
            System.out.println();
            System.out.println(" |--------NaiveBayes-------|");
            System.out.println(" |            |            |");
        }
        NaiveBayes nb = new NaiveBayes();
        classifiersScore = classify(nb, reducedSet, internalTest);
        fitnessValue += classifiersScore;

        if (verbose == true) {
            System.out.println();
            System.out.println(" |-------RandomForest------|");
            System.out.println(" |            |            |");
        }
        RandomForest rf5 = new RandomForest();
        rf5.setNumTrees(5);
        classifiersScore = classify(rf5, reducedSet, internalTest);
        fitnessValue += classifiersScore;

        if (verbose == true) {
            System.out.println();
            System.out.println(" |---------Logistic--------|");
            System.out.println(" |            |            |");
        }
        Logistic log = new Logistic();
        classifiersScore = classify(log, reducedSet, internalTest);
        fitnessValue += classifiersScore;

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }

    fitnessValue /= 5;

    if (verbose == true) {
        System.out.println();
        System.out.println("Fitness: " + fitnessValue);
        System.out.println("---------------------------------------------------");
    }

    return fitnessValue;
}

From source file:au.edu.usyd.it.yangpy.snp.GEsnpxPara.java

License:Open Source License

/**
 * this function perform genetic operations
 *
 * @param saveFlag   append/write to the output file
 *///from   w  w  w  . ja v  a 2  s . c om
public void performGeneticOperation(int saveFlag) throws Exception {
    // initialize processing components
    // loading the raw data
    Instances rawData = new Instances(new BufferedReader(new FileReader(file)));
    rawData.setClassIndex(rawData.numAttributes() - 1);

    ParallelGenetic genetic = new ParallelGenetic(rawData, chroLen, popSize, terGener, mode, balance, diversity,
            numThread);
    genetic.initializeParameters();
    genetic.initializeChromosomes();
    genetic.evaluate();

    for (int i = 1; i < genetic.getTerimateGeneration(); i++) {
        genetic.selectElitism();
        genetic.selectUsingTournament();
        genetic.crossover();
        genetic.mutate();
        genetic.generateNewGeneration();
        genetic.evaluate();
    }

    if (saveFlag == 0)
        genetic.saveBestChro(false);
    else
        genetic.saveBestChro(true);
}

From source file:aw_cluster.myKMeans.java

@Override
public void buildClusterer(Instances data) throws Exception {
    getCapabilities().testWithFail(data);

    Instances instances = new Instances(data);
    instances.setClassIndex(-1);

    if (instances.numInstances() == 0) {
        throw new RuntimeException("Dataset should not be empty");
    }/*from w w w . j a  va 2s .  c o  m*/

    assignments = new int[instances.numInstances()];
    centroid = new Instances(instances, numCluster);
    distanceFunction.setInstances(instances);
    squaredError = new double[numCluster];

    // Initialize Centroid Random From seed
    Random random = new Random(getSeedRandom());
    Instances tempInstances = new Instances(instances);

    int tI = tempInstances.numInstances() - 1;
    while (tI >= 0 && centroid.numInstances() < numCluster) {
        int indexCentroid = random.nextInt(tI + 1);
        centroid.add(tempInstances.instance(indexCentroid));
        tempInstances.swap(tI, indexCentroid);
        tI--;
    }

    tempInstances = null;

    boolean converged = false;
    while (!converged) {
        converged = true;
        numIteration++;
        for (int i = 0; i < instances.numInstances(); ++i) {
            Instance toCluster = instances.instance(i);
            int clusterResult = clusterInstanceProcess(toCluster, true);
            if (clusterResult != assignments[i])
                converged = false;
            assignments[i] = clusterResult;
        }

        // update centroid
        Instances[] TempI = new Instances[numCluster];
        centroid = new Instances(instances, numCluster);
        for (int i = 0; i < TempI.length; ++i) {
            TempI[i] = new Instances(instances, 0);
        }
        for (int i = 0; i < instances.numInstances(); ++i) {
            TempI[assignments[i]].add(instances.instance(i));
        }
        for (int i = 0; i < TempI.length; ++i) {
            moveCentroid(TempI[i]);
        }
        if (converged)
            squaredError = new double[numCluster];
        if (numIteration == maxIteration)
            converged = true;
        sizeEachCluster = new int[numCluster];
        for (int i = 0; i < numCluster; ++i) {
            sizeEachCluster[i] = TempI[i].numInstances();
        }

    }
}

From source file:be.uza.keratoconus.analysis.impl.PreTrainedModel.java

License:Open Source License

@Override
public void processPatientExam(PatientExam exam) {
    examData = exam.getExamData();//from ww w .j  a v a2s.  co m
    String headerLine = "";
    String dataLine = "";
    int nColumns = 0;
    for (String fieldName : classificationModelService.getUsedFields()) {
        if (examData.containsKey(fieldName)) {
            headerLine += fieldName + SEMICOLON;
            final String fieldValue = examData.get(fieldName);
            // TODO fatal error if fieldValue is null?
            dataLine += fieldValue + SEMICOLON;
            ++nColumns;
        } else if (examData.containsKey(fieldName + " " + Face.FRONT)) {
            headerLine += fieldName + " " + Face.FRONT + SEMICOLON;
            final String frontFieldValue = examData.get(fieldName + " " + Face.FRONT);
            // TODO fatal error if fieldValue is null?
            dataLine += frontFieldValue + SEMICOLON;
            ++nColumns;
            headerLine += fieldName + " " + Face.BACK + SEMICOLON;
            final String backFieldValue = examData.get(fieldName + " " + Face.BACK);
            // TODO fatal error if fieldValue is null?
            dataLine += backFieldValue + SEMICOLON;
            ++nColumns;
        }
    }

    String csv = headerLine + "Class\n" + dataLine + "?\n";
    CSVLoader csvLoader = new CSVLoader();
    csvLoader.setFieldSeparator(SEMICOLON);
    try {
        csvLoader.setSource(new ByteArrayInputStream(csv.getBytes(Charset.forName("windows-1252"))));
        final Instances dataSet = csvLoader.getDataSet();
        dataSet.setClassIndex(nColumns);
        instance = dataSet.get(0);
    } catch (Exception e) {
        logService.log(ownComponentContext.getServiceReference(), LogService.LOG_WARNING,
                "Exception thrown when reading CSV record", e);
    }
}

From source file:binarizer.LayoutAnalysis.java

public double crossValidation(String arffFile) throws Exception {
    DataSource source = new DataSource(arffFile);
    Instances trainingData = source.getDataSet();
    if (trainingData.classIndex() == -1)
        trainingData.setClassIndex(trainingData.numAttributes() - 1);
    NaiveBayes nb = new NaiveBayes();
    nb.setUseSupervisedDiscretization(true);
    Evaluation evaluation = new Evaluation(trainingData);
    evaluation.crossValidateModel(nb, trainingData, 10, new Random(1));
    System.out.println(evaluation.toSummaryString());
    return evaluation.errorRate();
}

From source file:binarytreesom.clustering.BinaryTreeSOMClustering.java

/**
 * Initialize the tree configuration. This implementation considers a complete binary tree of depth h. 
 *///from w  ww  .  ja v  a2s.  c o  m
private void initialize() throws IOException {
    //the number of nodes N, is penednt on h. actualy N
    //h=ln N -> N=2^h
    Instances instances = readArff(getFilenameARFF());
    instances.setClassIndex(-1);//clustering Stuff

    numberOfInstances = instances.numInstances();
    dimensionality = instances.numAttributes();
    data = new double[getNumberOfInstances()][getDimensionality()];
    weight = new double[getNumberOfNeurons()][getDimensionality()];
    //randomly select instances and assign to weight.

    for (int k = 0; k < getNumberOfNeurons(); k++) {
        weight[k] = instances.instance(r.nextInt(getNumberOfInstances())).toDoubleArray(); //hard copy of the double array
    }

    for (int k = 0; k < getNumberOfInstances(); k++) {
        data[k] = instances.instance(k).toDoubleArray(); //hard copy of the double array
    }
}

From source file:bme.mace.logicdomain.Evaluation.java

License:Open Source License

/**
 * Prints the predictions for the given dataset into a supplied StringBuffer
 * /*from ww  w . ja va2 s.co  m*/
 * @param classifier the classifier to use
 * @param train the training data
 * @param testSource the test set
 * @param classIndex the class index (1-based), if -1 ot does not override the
 *          class index is stored in the data file (by using the last
 *          attribute)
 * @param attributesToOutput the indices of the attributes to output
 * @param printDistribution prints the complete distribution for nominal
 *          classes, not just the predicted value
 * @param text StringBuffer to hold the printed predictions
 * @throws Exception if test file cannot be opened
 */
public static void printClassifications(Classifier classifier, Instances train, DataSource testSource,
        int classIndex, Range attributesToOutput, boolean printDistribution, StringBuffer text)
        throws Exception {

    if (testSource != null) {
        Instances test = testSource.getStructure();
        if (classIndex != -1) {
            test.setClassIndex(classIndex - 1);
        } else {
            if (test.classIndex() == -1) {
                test.setClassIndex(test.numAttributes() - 1);
            }
        }

        // print the header
        printClassificationsHeader(test, attributesToOutput, printDistribution, text);

        // print predictions
        int i = 0;
        testSource.reset();
        test = testSource.getStructure(test.classIndex());
        while (testSource.hasMoreElements(test)) {
            Instance inst = testSource.nextElement(test);
            text.append(predictionText(classifier, inst, i, attributesToOutput, printDistribution));
            i++;
        }
    }
    // return text.toString();
}