List of usage examples for weka.core Instances numClasses
publicint numClasses()
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); }