List of usage examples for weka.core Instances numAttributes
publicint numAttributes()
From source file:bme.mace.logicdomain.Evaluation.java
License:Open Source License
/** * Prints the header for the predictions output into a supplied StringBuffer * //from w w w . j a v a 2 s. c o m * @param test structure of the test set to print predictions for * @param attributesToOutput indices of the attributes to output * @param printDistribution prints the complete distribution for nominal * attributes, not just the predicted value * @param text the StringBuffer to print to */ protected static void printClassificationsHeader(Instances test, Range attributesToOutput, boolean printDistribution, StringBuffer text) { // print header if (test.classAttribute().isNominal()) { if (printDistribution) { text.append(" inst# actual predicted error distribution"); } else { text.append(" inst# actual predicted error prediction"); } } else { text.append(" inst# actual predicted error"); } if (attributesToOutput != null) { attributesToOutput.setUpper(test.numAttributes() - 1); text.append(" ("); boolean first = true; for (int i = 0; i < test.numAttributes(); i++) { if (i == test.classIndex()) { continue; } if (attributesToOutput.isInRange(i)) { if (!first) { text.append(","); } text.append(test.attribute(i).name()); first = false; } } text.append(")"); } text.append("\n"); }
From source file:bme.mace.logicdomain.Evaluation.java
License:Open Source License
/** * Prints the predictions for the given dataset into a supplied StringBuffer * //www . j a va 2 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(); }
From source file:boosting.classifiers.DecisionStumpWritable.java
License:Open Source License
/** * Generates the classifier.//from www.ja v a2s . c o m * * @param instances set of instances serving as training data * @throws Exception if the classifier has not been generated successfully */ public void buildClassifier(Instances instances) throws Exception { double bestVal = Double.MAX_VALUE, currVal; double bestPoint = -Double.MAX_VALUE; int bestAtt = -1, numClasses; // can classifier handle the data? getCapabilities().testWithFail(instances); // remove instances with missing class instances = new Instances(instances); instances.deleteWithMissingClass(); // only class? -> build ZeroR model if (instances.numAttributes() == 1) { System.err.println( "Cannot build model (only class attribute present in data!), " + "using ZeroR model instead!"); m_ZeroR = new weka.classifiers.rules.ZeroR(); m_ZeroR.buildClassifier(instances); return; } else { m_ZeroR = null; } double[][] bestDist = new double[3][instances.numClasses()]; m_Instances = new Instances(instances); if (m_Instances.classAttribute().isNominal()) { numClasses = m_Instances.numClasses(); } else { numClasses = 1; } // For each attribute boolean first = true; for (int i = 0; i < m_Instances.numAttributes(); i++) { if (i != m_Instances.classIndex()) { // Reserve space for distribution. m_Distribution = new double[3][numClasses]; // Compute value of criterion for best split on attribute if (m_Instances.attribute(i).isNominal()) { currVal = findSplitNominal(i); } else { currVal = findSplitNumeric(i); } if ((first) || (currVal < bestVal)) { bestVal = currVal; bestAtt = i; bestPoint = m_SplitPoint; for (int j = 0; j < 3; j++) { System.arraycopy(m_Distribution[j], 0, bestDist[j], 0, numClasses); } } // First attribute has been investigated first = false; } } // Set attribute, split point and distribution. m_AttIndex = bestAtt; m_SplitPoint = bestPoint; m_Distribution = bestDist; if (m_Instances.classAttribute().isNominal()) { for (int i = 0; i < m_Distribution.length; i++) { double sumCounts = Utils.sum(m_Distribution[i]); if (sumCounts == 0) { // This means there were only missing attribute values System.arraycopy(m_Distribution[2], 0, m_Distribution[i], 0, m_Distribution[2].length); Utils.normalize(m_Distribution[i]); } else { Utils.normalize(m_Distribution[i], sumCounts); } } } // Save memory m_Instances = new Instances(m_Instances, 0); }
From source file:boostingPL.boosting.AdaBoost.java
License:Open Source License
public static void main(String[] args) throws Exception { java.io.File inputFile = new java.io.File( "/home/aax/xpShareSpace/dataset/single-class/+winered/winequality-red.datatrain1.arff"); ArffLoader atf = new ArffLoader(); atf.setFile(inputFile);//from w w w . j a v a2 s . com Instances training = atf.getDataSet(); training.setClassIndex(training.numAttributes() - 1); AdaBoost adaBoost = new AdaBoost(training, 100); for (int t = 0; t < 100; t++) { adaBoost.run(t); } java.io.File inputFilet = new java.io.File( "/home/aax/xpShareSpace/dataset/single-class/+winered/winequality-red.datatest1.arff"); ArffLoader atft = new ArffLoader(); atft.setFile(inputFilet); Instances testing = atft.getDataSet(); testing.setClassIndex(testing.numAttributes() - 1); Evaluation eval = new Evaluation(testing); for (Instance inst : testing) { eval.evaluateModelOnceAndRecordPrediction(adaBoost, inst); } System.out.println(eval.toSummaryString()); System.out.println(eval.toClassDetailsString()); System.out.println(eval.toMatrixString()); /* int right = 0; for (int i = 0; i < testing.numInstances(); i++) { Instance inst = testing.instance(i); if (adaBoost.classifyInstance(inst) == inst.classValue()) { right++; } } System.out.println(right); System.out.println((double)right/training.numInstances()); */ }
From source file:boostingPL.boosting.InstancesHelper.java
License:Open Source License
/** * create instances header from metadata, * the metadata like this://w w w . j av a2 s . c o m * * <br/> * <p>attributesNum:100</p> * <p>classes:+1,-1</p> * <br/> * * @param in * @return * @throws IOException */ public static Instances createInstancesFromMetadata(LineReader in) throws IOException { int attributesNum = 0; ArrayList<Attribute> attInfo = null; List<String> classItems = null; Text line = new Text(); while (in.readLine(line) > 0) { String sline = line.toString(); if (sline.startsWith("attributesNum:")) { attributesNum = Integer.parseInt(sline.substring(14)); attInfo = new ArrayList<Attribute>(attributesNum + 1); for (int i = 0; i < attributesNum; i++) { attInfo.add(new Attribute("attr" + i)); } System.out.println("AttributeNum:" + attributesNum); } else if (sline.startsWith("classes:")) { String classes = sline.substring(8); String[] citems = classes.split(","); classItems = new ArrayList<String>(citems.length); for (String s : citems) { classItems.add(s); } System.out.println("classes:" + classes); } } attInfo.add(new Attribute("class", classItems)); Instances insts = new Instances("BoostingPL-dataset", attInfo, 0); insts.setClassIndex(insts.numAttributes() - 1); return insts; }
From source file:boostingPL.boosting.InstancesHelper.java
License:Open Source License
/** * create instances header from a instance * //ww w. ja v a2s. com * @param instance * @return instances */ public static Instances createInstances(String text) { String[] items = text.split(" "); ArrayList<Attribute> attInfo = new ArrayList<Attribute>(); for (int i = 0; i < items.length - 1; i++) { attInfo.add(new Attribute("attr" + i)); } List<String> classItems = new ArrayList<String>(2); classItems.add("1"); classItems.add("-1"); attInfo.add(new Attribute("class", classItems)); Instances insts = new Instances("BoostingPL-dataset", attInfo, 0); insts.setClassIndex(insts.numAttributes() - 1); return insts; }
From source file:boostingPL.boosting.SAMME.java
License:Open Source License
public static void main(String[] args) throws Exception { java.io.File inputFile = new java.io.File(args[0]); ArffLoader atf = new ArffLoader(); atf.setFile(inputFile);//w w w . j av a 2 s . co m Instances training = atf.getDataSet(); training.setClassIndex(training.numAttributes() - 1); //Instances testing = new Instances(training); int iterationNum = 100; SAMME samme = new SAMME(training, iterationNum); for (int t = 0; t < iterationNum; t++) { samme.run(t); } java.io.File inputFilet = new java.io.File(args[1]); ArffLoader atft = new ArffLoader(); atft.setFile(inputFilet); Instances testing = atft.getDataSet(); testing.setClassIndex(testing.numAttributes() - 1); Evaluation eval = new Evaluation(testing); for (Instance inst : testing) { eval.evaluateModelOnceAndRecordPrediction(samme, inst); } System.out.println(eval.toSummaryString()); System.out.println(eval.toClassDetailsString()); System.out.println(eval.toMatrixString()); }
From source file:br.com.edu.arff.ConstructArff.java
public static void main(String[] args) throws Exception { FastVector atts;// w w w. j a va 2 s.co m FastVector attsRel; FastVector attVals; FastVector attValsRel; Instances data; Instances dataRel; double[] vals; double[] valsRel; int i, j, cont; ConnectionLAK conexao = new ConnectionLAK(); ArrayList<String> uris; ArrayList<String> todos_topicos; ArrayList<Topicos> valores; uris = conexao.buscaURIS(); todos_topicos = conexao.BuscarTodosTopicos(); atts = new FastVector(); for (String topicos : todos_topicos) { atts.addElement(new Attribute(topicos)); } data = new Instances("Relacao", atts, 0); for (String uri : uris) { i = 0; vals = new double[data.numAttributes()]; valores = conexao.BuscarTopicos(uri); for (int t = 0; t < data.numAttributes(); t++) { for (Topicos topic : valores) { String comparacao = topic.getTopico(); String atributo = data.attribute(t).name(); if (comparacao.equals(atributo)) { vals[t] = topic.getValor(); break; } } } data.add(new Instance(1.0, vals)); } System.out.println(data); }
From source file:br.com.edu.arff.LoadArff.java
public ArrayList<Cluster> carregarArff(String caminho) throws FileNotFoundException, IOException { BufferedReader reader = new BufferedReader(new FileReader(caminho)); ArffReader arff = new ArffReader(reader); Instances data = arff.getData(); data.setClassIndex(data.numAttributes() - 1); Instance inst = null;/*from w w w . j a v a 2 s. co m*/ Attribute att = data.attribute("Cluster"); ArrayList<String> uris; ArrayList<Cluster> lista = new ArrayList<Cluster>(); Fuseki fuseki = new Fuseki(); uris = fuseki.buscaURIS(); for (int i = 0; i <= data.numInstances() - 1; i++) { Cluster cluster = new Cluster(); String clusters = String.valueOf(data.get(i).stringValue(att)); cluster.setUri(uris.get(i)); cluster.setGrupo(clusters); lista.add(cluster); } // for (Cluster c : lista) { // System.out.println(c.getUri()); // System.out.println(c.getGrupo()); // } return lista; }
From source file:br.com.edu.partition.Tranning.java
public static Double Tranning_JRIP(String test, String tranning) throws IOException, Exception { Double result_ = null;//from www . j av a2s .c o m ArffLoader loader; loader = new ArffLoader(); loader.setFile(new File(tranning)); loader.getStructure(); Instances trainingset = loader.getDataSet(); int classIndex = trainingset.numAttributes() - 1; trainingset.setClassIndex(classIndex); //J48 j48 = new J48(); JRip jRip = new JRip(); //String[] options2 = {"-F", "3", "-N", "2.0", "-O", "2", "-S", "1"}; //jRip.setOptions(options2); //jRip.buildClassifier(trainingset); jRip.buildClassifier(trainingset); loader = new ArffLoader(); loader.setFile(new File(test)); loader.getStructure(); Instances testset = loader.getDataSet(); testset.setClassIndex(testset.numAttributes() - 1); for (Instance instance : testset) { //double[] result = jRip.distributionForInstance(instance); double[] result = jRip.distributionForInstance(instance); result_ = result[1]; //System.out.println(test + " " + result[1] + " " + tranning); } return result_; }