Example usage for weka.core Instances numClasses

List of usage examples for weka.core Instances numClasses

Introduction

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

Prototype


publicint numClasses() 

Source Link

Document

Returns the number of class labels.

Usage

From source file:dewaweebtreeclassifier.Sujeong.java

public double computeEntropy(Instances data) {
    double[] nClass = new double[data.numClasses()];
    Enumeration enumInstance = data.enumerateInstances();
    while (enumInstance.hasMoreElements()) {
        Instance instance = (Instance) enumInstance.nextElement();
        nClass[(int) instance.classValue()]++;
    }/*from ww w  . j a  v  a 2s  .c om*/

    double entropy = 0.0;
    for (int i = 0; i < data.numClasses(); i++) {
        if (nClass[i] > 0) {
            double ratio = nClass[i] / data.numInstances();
            entropy -= (ratio * Utils.log2(ratio));
        }
    }

    return entropy;
}

From source file:dewaweebtreeclassifier.veranda.VerandaTree.java

/**
 * // ww w.j  av  a  2s  .  c  o  m
 * @param data 
 */
public void buildTree(Instances data) {
    // exit if there is no data left in the dataset
    if (data.numInstances() == 0) {
        mChild = null;
        return;
    }

    double[] informationGains = new double[data.numAttributes()];
    Enumeration enumAttrs = data.enumerateAttributes();
    while (enumAttrs.hasMoreElements()) {
        Attribute attr = (Attribute) enumAttrs.nextElement();
        informationGains[attr.index()] = computeGain(data, attr);
    }
    int maxIdx = Utils.maxIndex(informationGains);

    if (Utils.eq(informationGains[maxIdx], 0)) {
        mClassDistribution = new int[data.numClasses()];
        Enumeration enumInst = data.enumerateInstances();
        while (enumInst.hasMoreElements()) {
            Instance instance = (Instance) enumInst.nextElement();
            mClassDistribution[(int) instance.classValue()]++;
        }
        mClassValue = Utils.maxIndex(mClassDistribution);
    } else {
        mSplitAttribute = data.attribute(maxIdx);
        Instances[] splitInstances = splitInstancesOnAttribute(data, mSplitAttribute);
        mChild = new VerandaTree[mSplitAttribute.numValues()];
        for (int i = 0; i < mChild.length; i++) {
            mChild[i] = new VerandaTree();
            mChild[i].buildTree(splitInstances[i]);
        }
    }
}

From source file:dewaweebtreeclassifier.veranda.VerandaTree.java

/**
 * /*from  w  ww  .j a  v a  2 s.  c om*/
 * @param data 
 * @return  
 */
public double computeEntropy(Instances data) {
    double[] nClass = new double[data.numClasses()];
    Enumeration enumInstance = data.enumerateInstances();
    while (enumInstance.hasMoreElements()) {
        Instance instance = (Instance) enumInstance.nextElement();
        nClass[(int) instance.classValue()]++;
    }

    double entropy = 0.0;
    for (int i = 0; i < data.numClasses(); i++) {
        if (nClass[i] > 0) {
            double ratio = nClass[i] / data.numInstances();
            entropy -= (ratio * Utils.log2(ratio));
        }
    }

    return entropy;
}

From source file:edu.oregonstate.eecs.mcplan.ml.Memorizer.java

License:Open Source License

@Override
public void buildClassifier(final Instances data) throws Exception {
    Nclasses_ = data.numClasses();
    class_idx_ = data.classIndex();
    for (final Instance i : data) {
        final double[] x = i.toDoubleArray();
        final int c = (int) x[class_idx_];
        x[class_idx_] = 0;
        m_.put(new ArrayHolder(x), c);
    }// w  w  w.ja  v a2  s .c  o m
}

From source file:edu.umbc.cs.maple.utils.WekaUtils.java

License:Open Source License

/** Determines whether a data set has equal class priors.
 * @param data//from   ww w.  ja  va 2  s  . co m
 * @return whether the data set has equal class priors
 */
public static boolean equalClassPriors(Instances data) {
    double[] counts = new double[data.numClasses()];
    int numInstances = data.numInstances();
    for (int i = 0; i < numInstances; i++) {
        Instance inst = data.instance(i);
        int classValueIdx = (int) Math.round(inst.classValue());
        counts[classValueIdx] = counts[classValueIdx] + 1;
    }

    // compute the mean
    double meanCount = MathUtils.sum(counts) / counts.length;
    double[] meanArray = new double[counts.length];
    for (int i = 0; i < meanArray.length; i++) {
        meanArray[i] = meanCount;
    }

    // compute the rmse
    double rmse = MathUtils.rmse(meanArray, counts);

    // compute 2.5% of the possible 
    double deviationAllowed = Math.ceil(0.025 * meanCount);

    if (rmse <= deviationAllowed)
        return true;
    else
        return false;
}

From source file:edu.umbc.cs.maple.utils.WekaUtils.java

License:Open Source License

/** Converts a set of instances to svm-light format
 * @param data the weka instances/*from  w  w w .  ja va  2s .  com*/
 * @return the weka instances in svm-light format
 */
public static String arffToSVMLight(Instances data, SVMLightLabelFormat labelFormat) {

    if (labelFormat == SVMLightLabelFormat.CLASSIFICATION && data.numClasses() != 2) {
        throw new IllegalArgumentException(
                "SVM-light classification label format requires that the data contain only two classes.");
    }

    String str = "";
    String endline = System.getProperty("line.separator");

    int numInstances = data.numInstances();
    int numAttributes = data.numAttributes();
    int classAttIdx = data.classIndex();

    for (int instIdx = 0; instIdx < numInstances; instIdx++) {

        Instance inst = data.instance(instIdx);

        // convert the instance label
        if (labelFormat == SVMLightLabelFormat.CLASSIFICATION) {
            str += (inst.classValue() == 0) ? "-1" : "1";
        } else {
            str += inst.classValue();
        }

        str += " ";

        // convert each feature
        for (int attIdx = 0; attIdx < numAttributes; attIdx++) {
            // skip the class attribute
            if (attIdx == classAttIdx)
                continue;
            str += (attIdx + 1) + ":" + inst.value(attIdx) + " ";
        }

        // append the instance info string
        str += "# " + instIdx;

        str += endline;
    }

    return str;
}

From source file:expshell.NeuralClassifier.java

@Override
public void buildClassifier(Instances i) throws Exception {
    List<Integer> numNodes = new ArrayList<Integer>();
    //numNodes.add(5);
    //numNodes.add(6);
    numNodes.add(i.numClasses());

    nn = new NeuralNetwork(numNodes.size(), i.numAttributes() - 1, numNodes);
    for (int j = 0; j < i.numInstances(); j++) {
        System.out.println(nn.run(i.instance(j)));
    }/*from w w w.  j av  a  2  s . c  om*/

}

From source file:FFNN.MultiplePerceptron.java

public MultiplePerceptron(int itt, double learn, int numHLayer, Instances i) {
    listNodeHidden = new ArrayList<>();//inisialisasis listNodeHidden
    listNodeOutput = new ArrayList<>();
    itteration = itt;//  ww w.j  a  va2  s .  com
    learningRate = learn;
    numHiddenLayer = numHLayer;
    for (int hiddenLayer = 0; hiddenLayer < numHiddenLayer + 1; hiddenLayer++) {//buat neuron untuk hidden layer
        //ditambah 1 untuk neuron bias
        listNodeHidden.add(new Node(i.numAttributes()));

    }

    for (int numInstance = 0; numInstance < i.numClasses(); numInstance++) {//buat neuron untuk output
        listNodeOutput.add(new Node(listNodeHidden.size()));
    }
    target = new ArrayList<>();
    instancesToDouble = new double[i.numInstances()];
    for (int numIns = 0; numIns < i.numInstances(); numIns++) {
        instancesToDouble[numIns] = i.instance(numIns).toDoubleArray()[i.classIndex()];
    }
}

From source file:GClass.EvaluationInternal.java

License:Open Source License

/**
 * Initializes all the counters for the evaluation and also takes a
 * cost matrix as parameter.//from  www  . j  a v  a2  s  .  c om
 *
 * @param data set of instances, to get some header information
 * @param costMatrix the cost matrix---if null, default costs will be used
 * @exception Exception if cost matrix is not compatible with
 * data, the class is not defined or the class is numeric
 */
public EvaluationInternal(Instances data, CostMatrix costMatrix) throws Exception {

    m_NumClasses = data.numClasses();
    m_NumFolds = 1;
    m_ClassIsNominal = data.classAttribute().isNominal();

    if (m_ClassIsNominal) {
        m_ConfusionMatrix = new double[m_NumClasses][m_NumClasses];
        m_ClassNames = new String[m_NumClasses];
        for (int i = 0; i < m_NumClasses; i++) {
            m_ClassNames[i] = data.classAttribute().value(i);
        }
    }
    m_CostMatrix = costMatrix;
    if (m_CostMatrix != null) {
        if (!m_ClassIsNominal) {
            throw new Exception("Class has to be nominal if cost matrix " + "given!");
        }
        if (m_CostMatrix.size() != m_NumClasses) {
            throw new Exception("Cost matrix not compatible with data!");
        }
    }
    m_ClassPriors = new double[m_NumClasses];
    setPriors(data);
    m_MarginCounts = new double[k_MarginResolution + 1];
}

From source file:gr.auth.ee.lcs.data.representations.complex.SingleClassRepresentation.java

License:Open Source License

@Override
protected void createClassRepresentation(final Instances instances) {

    if (instances.classIndex() < 0)
        instances.setClassIndex(instances.numAttributes() - 1);

    // Rule Consequents
    final Enumeration<?> classNames = instances.classAttribute().enumerateValues();
    final String[] ruleConsequents = new String[instances.numClasses()];
    this.ruleConsequents = ruleConsequents;
    for (int i = 0; i < instances.numClasses(); i++)
        ruleConsequents[i] = (String) classNames.nextElement();

    attributeList[attributeList.length - 1] = new UniLabel(chromosomeSize, "class", ruleConsequents);

}