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:c4.pkg5crossv.Classifier.java

public static void trainAndTest() throws FileNotFoundException, IOException, Exception {

    Instances data = DataLoad.loadData("./src/data/irysy.arff");
    data.setClassIndex(data.numAttributes() - 1);

    //Losowy podzial tablicy
    data.randomize(new Random());
    double percent = 60.0;
    int trainSize = (int) Math.round(data.numInstances() * percent / 100);
    int testSize = data.numInstances() - trainSize;
    Instances trainData = new Instances(data, 0, trainSize);
    Instances testData = new Instances(data, trainSize, testSize);

    String[] options = Utils.splitOptions("-U -M 10");
    J48 tree = new J48();
    tree.setOptions(options);//from   w  ww . j  ava 2s .  c  o m
    tree.buildClassifier(trainData);

    Evaluation eval2 = new Evaluation(trainData);
    eval2.crossValidateModel(tree, testData, 10, new Random(1)); // 5 - fold
    System.out.println(eval2.toSummaryString("Wyniki:", false)); //Wypisanie testovania cross validation
}

From source file:c4.pkg5crossv.Preview.java

/**
 * method to write arff data into s.o.p.
 * @throws IOException /* w  w w .  j  ava 2  s.  c o  m*/
 */

public static void showData() throws IOException {

    String source = MainWindow.browsedFileLabel.getText();
    Instances data = DataLoad.loadData(source.replace("\\", "/"));
    data.setClassIndex(data.numAttributes() - 1);
    String field = "";
    for (int i = 0; i < data.numAttributes(); i++) {
        // Print the current attribute.
        System.out.print(data.attribute(i).name() + ": ");
        previewTextArea.append("\n" + data.attribute(i).name() + ": ");
        // Print the values associated with the current attribute.
        double[] values = data.attributeToDoubleArray(i);

        System.out.println(Arrays.toString(values));
        previewTextArea.append(Arrays.toString(values));
    }

}

From source file:ca.uqac.florentinth.speakerauthentication.Learning.Learning.java

License:Apache License

public void trainClassifier(Classifier classifier, FileReader trainingDataset, FileOutputStream trainingModel,
        Integer crossValidationFoldNumber) throws Exception {
    Instances instances = new Instances(new BufferedReader(trainingDataset));

    switch (classifier) {
    case KNN:/*from   ww w. j av a2s  . c om*/
        int K = (int) Math.ceil(Math.sqrt(instances.numInstances()));
        this.classifier = new IBk(K);
        break;
    case NB:
        this.classifier = new NaiveBayes();
    }

    if (instances.classIndex() == -1) {
        instances.setClassIndex(instances.numAttributes() - 1);
    }

    this.classifier.buildClassifier(instances);

    if (crossValidationFoldNumber > 0) {
        Evaluation evaluation = new Evaluation(instances);
        evaluation.crossValidateModel(this.classifier, instances, crossValidationFoldNumber, new Random(1));
        kappa = evaluation.kappa();
        fMeasure = evaluation.weightedFMeasure();
        confusionMatrix = evaluation.toMatrixString("Confusion matrix: ");
    }

    ObjectOutputStream outputStream = new ObjectOutputStream(trainingModel);
    outputStream.writeObject(this.classifier);
    outputStream.flush();
    outputStream.close();
}

From source file:ca.uqac.florentinth.speakerauthentication.Learning.Learning.java

License:Apache License

public Map<String, String> makePrediction(String username, FileInputStream trainingModel,
        FileReader testingDataset) throws Exception {
    Map<String, String> predictions = new HashMap<>();

    ObjectInputStream inputStream = new ObjectInputStream(trainingModel);
    weka.classifiers.Classifier classifier = (weka.classifiers.Classifier) inputStream.readObject();
    inputStream.close();//from w  ww. j  a  v  a 2 s .  c  o  m

    Instances instances = new Instances(new BufferedReader(testingDataset));

    if (instances.classIndex() == -1) {
        instances.setClassIndex(instances.numAttributes() - 1);
    }

    int last = instances.numInstances() - 1;

    if (instances.instance(last).stringValue(instances.classIndex()).equals(username)) {
        double label = classifier.classifyInstance(instances.instance(last));
        instances.instance(last).setClassValue(label);
        predictions.put(username, instances.instance(last).stringValue(instances.classIndex()));
    }

    return predictions;
}

From source file:cba.Apriori.java

License:Open Source License

/**
 * Method that generates all large itemsets with a minimum support, and from
 * these all association rules with a minimum confidence.
 *
 * @param instances the instances to be used for generating the associations
 * @throws Exception if rules can't be built successfully
 *///from w  w  w.  ja  v  a  2 s  . co  m
public void buildAssociations(Instances instances) throws Exception {

    double[] confidences, supports;
    int[] indices;
    FastVector[] sortedRuleSet;
    int necSupport = 0;

    instances = new Instances(instances);

    if (m_removeMissingCols) {
        instances = removeMissingColumns(instances);
    }
    if (m_car && m_metricType != CONFIDENCE)
        throw new Exception("For CAR-Mining metric type has to be confidence!");

    // only set class index if CAR is requested
    if (m_car) {
        if (m_classIndex == -1) {
            instances.setClassIndex(instances.numAttributes() - 1);
        } else if (m_classIndex <= instances.numAttributes() && m_classIndex > 0) {
            instances.setClassIndex(m_classIndex - 1);
        } else {
            throw new Exception("Invalid class index.");
        }
    }

    // can associator handle the data?
    getCapabilities().testWithFail(instances);

    m_cycles = 0;
    if (m_car) {
        //m_instances does not contain the class attribute
        m_instances = LabeledItemSet.divide(instances, false);

        //m_onlyClass contains only the class attribute
        m_onlyClass = LabeledItemSet.divide(instances, true);
    } else
        m_instances = instances;

    if (m_car && m_numRules == Integer.MAX_VALUE) {
        // Set desired minimum support
        m_minSupport = m_lowerBoundMinSupport;
    } else {
        // Decrease minimum support until desired number of rules found.
        m_minSupport = m_upperBoundMinSupport - m_delta;
        m_minSupport = (m_minSupport < m_lowerBoundMinSupport) ? m_lowerBoundMinSupport : m_minSupport;
    }

    do {

        // Reserve space for variables
        m_Ls = new FastVector();
        m_hashtables = new FastVector();
        m_allTheRules = new FastVector[6];
        m_allTheRules[0] = new FastVector();
        m_allTheRules[1] = new FastVector();
        m_allTheRules[2] = new FastVector();
        if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
            m_allTheRules[3] = new FastVector();
            m_allTheRules[4] = new FastVector();
            m_allTheRules[5] = new FastVector();
        }
        sortedRuleSet = new FastVector[6];
        sortedRuleSet[0] = new FastVector();
        sortedRuleSet[1] = new FastVector();
        sortedRuleSet[2] = new FastVector();
        if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
            sortedRuleSet[3] = new FastVector();
            sortedRuleSet[4] = new FastVector();
            sortedRuleSet[5] = new FastVector();
        }
        if (!m_car) {
            // Find large itemsets and rules
            findLargeItemSets();
            if (m_significanceLevel != -1 || m_metricType != CONFIDENCE)
                findRulesBruteForce();
            else
                findRulesQuickly();
        } else {
            findLargeCarItemSets();
            findCarRulesQuickly();
        }

        // Sort rules according to their support
        /* supports = new double[m_allTheRules[2].size()];
         for (int i = 0; i < m_allTheRules[2].size(); i++) 
        supports[i] = (double)((AprioriItemSet)m_allTheRules[1].elementAt(i)).support();
         indices = Utils.stableSort(supports);
         for (int i = 0; i < m_allTheRules[2].size(); i++) {
        sortedRuleSet[0].addElement(m_allTheRules[0].elementAt(indices[i]));
        sortedRuleSet[1].addElement(m_allTheRules[1].elementAt(indices[i]));
        sortedRuleSet[2].addElement(m_allTheRules[2].elementAt(indices[i]));
        if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
        sortedRuleSet[3].addElement(m_allTheRules[3].elementAt(indices[i]));
        sortedRuleSet[4].addElement(m_allTheRules[4].elementAt(indices[i]));
        sortedRuleSet[5].addElement(m_allTheRules[5].elementAt(indices[i]));
        }
         }*/

        int j = m_allTheRules[2].size() - 1;
        supports = new double[m_allTheRules[2].size()];
        for (int i = 0; i < (j + 1); i++)
            supports[j - i] = ((double) ((ItemSet) m_allTheRules[1].elementAt(j - i)).support()) * (-1);
        indices = Utils.stableSort(supports);
        for (int i = 0; i < (j + 1); i++) {
            sortedRuleSet[0].addElement(m_allTheRules[0].elementAt(indices[j - i]));
            sortedRuleSet[1].addElement(m_allTheRules[1].elementAt(indices[j - i]));
            sortedRuleSet[2].addElement(m_allTheRules[2].elementAt(indices[j - i]));
            if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
                sortedRuleSet[3].addElement(m_allTheRules[3].elementAt(indices[j - i]));
                sortedRuleSet[4].addElement(m_allTheRules[4].elementAt(indices[j - i]));
                sortedRuleSet[5].addElement(m_allTheRules[5].elementAt(indices[j - i]));
            }
        }

        // Sort rules according to their confidence
        m_allTheRules[0].removeAllElements();
        m_allTheRules[1].removeAllElements();
        m_allTheRules[2].removeAllElements();
        if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
            m_allTheRules[3].removeAllElements();
            m_allTheRules[4].removeAllElements();
            m_allTheRules[5].removeAllElements();
        }
        confidences = new double[sortedRuleSet[2].size()];
        int sortType = 2 + m_metricType;

        for (int i = 0; i < sortedRuleSet[2].size(); i++)
            confidences[i] = ((Double) sortedRuleSet[sortType].elementAt(i)).doubleValue();
        indices = Utils.stableSort(confidences);
        for (int i = sortedRuleSet[0].size() - 1; (i >= (sortedRuleSet[0].size() - m_numRules))
                && (i >= 0); i--) {
            m_allTheRules[0].addElement(sortedRuleSet[0].elementAt(indices[i]));
            m_allTheRules[1].addElement(sortedRuleSet[1].elementAt(indices[i]));
            m_allTheRules[2].addElement(sortedRuleSet[2].elementAt(indices[i]));
            if (m_metricType != CONFIDENCE || m_significanceLevel != -1) {
                m_allTheRules[3].addElement(sortedRuleSet[3].elementAt(indices[i]));
                m_allTheRules[4].addElement(sortedRuleSet[4].elementAt(indices[i]));
                m_allTheRules[5].addElement(sortedRuleSet[5].elementAt(indices[i]));
            }
        }

        if (m_verbose) {
            if (m_Ls.size() > 1) {
                System.out.println(toString());
            }
        }
        if (m_minSupport == m_lowerBoundMinSupport || m_minSupport - m_delta > m_lowerBoundMinSupport)
            m_minSupport -= m_delta;
        else
            m_minSupport = m_lowerBoundMinSupport;

        necSupport = Math.round((float) ((m_minSupport * (double) m_instances.numInstances()) + 0.5));

        m_cycles++;
    } while ((m_allTheRules[0].size() < m_numRules) && (Utils.grOrEq(m_minSupport, m_lowerBoundMinSupport))
    /*        (necSupport >= lowerBoundNumInstancesSupport)*/
    /*        (Utils.grOrEq(m_minSupport, m_lowerBoundMinSupport)) */ && (necSupport >= 1));
    m_minSupport += m_delta;
}

From source file:CEP.HeaderManager.java

static void SetStructure(Instances structure) {
    ArffStructure = structure;
    structure.setClassIndex(structure.numAttributes() - 1);

    lock = false;
}

From source file:cezeri.feature.selection.FeatureSelectionInfluence.java

public static Influence[] getMostDiscriminativeFeature(String filePath, Classifier model) {
    Influence[] ret = null;/*from  ww  w  . j  a  va2 s . c om*/
    try {
        Instances data = DataSource.read(filePath);
        ret = new Influence[data.numAttributes() - 1];
        data.setClassIndex(data.numAttributes() - 1);
        // other options
        int seed = 1;
        int folds = 10;
        // randomize data
        Instances randData = new Instances(data);
        Random rand = new Random(seed);
        randData.randomize(rand);
        Evaluation evalBase = getEvaluation(randData, model, folds);
        double accBase = evalBase.correct() / evalBase.numInstances() * 100;
        double nf = randData.numAttributes();

        for (int j = 0; j < nf - 1; j++) {
            ret[j] = new Influence();
            String str = randData.attribute(j).name();
            Attribute att = randData.attribute(j);
            randData.deleteAttributeAt(j);
            Evaluation evalTemp = getEvaluation(randData, model, folds);
            double accTemp = evalTemp.correct() / evalTemp.numInstances() * 100;
            double tempInfluence = accBase - accTemp;
            ret[j].attributeName = str;
            ret[j].infVal = tempInfluence;
            randData.insertAttributeAt(att, j);
        }
        sortInfluenceArray(ret);
    } catch (Exception ex) {
        Logger.getLogger(FeatureSelectionInfluence.class.getName()).log(Level.SEVERE, null, ex);
    }
    return ret;
}

From source file:cezeri.utils.FactoryInstance.java

public static Instances generateInstances(String relationName, int nCols) {
    CMatrix cm = CMatrix.getInstance().zeros(1, nCols);
    FastVector att = new FastVector();
    for (int i = 0; i < cm.getColumnNumber(); i++) {
        att.addElement(new Attribute("f" + (i + 1)));
    }/*from  w w w. jav  a 2  s .  c o  m*/
    Instances ret = new Instances(relationName, att, cm.getRowNumber());
    for (int i = 0; i < cm.getRowNumber(); i++) {
        Instance ins = new Instance(cm.getColumnNumber());
        for (int j = 0; j < cm.getColumnNumber(); j++) {
            ins.setValue(j, cm.get2DArrayDouble()[i][j]);
        }
        ret.add(ins);
    }
    ret.setClassIndex(ret.numAttributes() - 1);
    return ret;
}

From source file:cezeri.utils.FactoryInstance.java

public static Instances generateInstances(String relationName, CMatrix cm) {
    FastVector att = new FastVector();
    for (int i = 0; i < cm.getColumnNumber(); i++) {
        att.addElement(new Attribute("f" + (i + 1)));
    }/* w w w  . j  a  v a  2s.  com*/
    Instances ret = new Instances(relationName, att, cm.getRowNumber());
    for (int i = 0; i < cm.getRowNumber(); i++) {
        Instance ins = new Instance(cm.getColumnNumber());
        for (int j = 0; j < cm.getColumnNumber(); j++) {
            ins.setValue(j, cm.get2DArrayDouble()[i][j]);
        }
        ret.add(ins);
    }
    ret.setClassIndex(ret.numAttributes() - 1);
    return ret;
}

From source file:cezeri.utils.FactoryInstance.java

public static Instances generateInstances(String relationName, double[][] m) {
    FastVector att = new FastVector();
    for (int i = 0; i < m[0].length; i++) {
        att.addElement(new Attribute("f" + (i + 1)));
    }//from  w  ww. jav  a  2  s .c o m
    Instances ret = new Instances(relationName, att, m.length);
    for (int i = 0; i < m.length; i++) {
        Instance ins = new Instance(m[0].length);
        for (int j = 0; j < m[0].length; j++) {
            ins.setValue(j, m[i][j]);
        }
        ret.add(ins);
    }
    ret.setClassIndex(ret.numAttributes() - 1);
    return ret;
}