List of usage examples for weka.core Instances setClassIndex
public void setClassIndex(int classIndex)
From source file:adaptedClusteringAlgorithms.MySimpleKMeans.java
License:Open Source License
/** * Generates a clusterer. Has to initialize all fields of the clusterer that * are not being set via options.// w ww . j a v a2 s .co m * * @param data set of instances serving as training data * @throws Exception if the clusterer has not been generated successfully */ @Override public void buildClusterer(Instances data) throws Exception { if (!SESAME.SESAME_GUI) MyFirstClusterer.weka_gui = true; // can clusterer handle the data? getCapabilities().testWithFail(data); m_Iterations = 0; m_ReplaceMissingFilter = new ReplaceMissingValues(); Instances instances = new Instances(data); instances.setClassIndex(-1); if (!m_dontReplaceMissing) { m_ReplaceMissingFilter.setInputFormat(instances); instances = Filter.useFilter(instances, m_ReplaceMissingFilter); } m_FullMissingCounts = new int[instances.numAttributes()]; if (m_displayStdDevs) { m_FullStdDevs = new double[instances.numAttributes()]; } m_FullNominalCounts = new int[instances.numAttributes()][0]; m_FullMeansOrMediansOrModes = moveCentroid(0, instances, false); for (int i = 0; i < instances.numAttributes(); i++) { m_FullMissingCounts[i] = instances.attributeStats(i).missingCount; if (instances.attribute(i).isNumeric()) { if (m_displayStdDevs) { m_FullStdDevs[i] = Math.sqrt(instances.variance(i)); } if (m_FullMissingCounts[i] == instances.numInstances()) { m_FullMeansOrMediansOrModes[i] = Double.NaN; // mark missing as mean } } else { m_FullNominalCounts[i] = instances.attributeStats(i).nominalCounts; if (m_FullMissingCounts[i] > m_FullNominalCounts[i][Utils.maxIndex(m_FullNominalCounts[i])]) { m_FullMeansOrMediansOrModes[i] = -1; // mark missing as most common // value } } } m_ClusterCentroids = new Instances(instances, m_NumClusters); int[] clusterAssignments = new int[instances.numInstances()]; if (m_PreserveOrder) { m_Assignments = clusterAssignments; } m_DistanceFunction.setInstances(instances); Random RandomO = new Random(getSeed()); int instIndex; HashMap initC = new HashMap(); DecisionTableHashKey hk = null; Instances initInstances = null; if (m_PreserveOrder) { initInstances = new Instances(instances); } else { initInstances = instances; } for (int j = initInstances.numInstances() - 1; j >= 0; j--) { instIndex = RandomO.nextInt(j + 1); hk = new DecisionTableHashKey(initInstances.instance(instIndex), initInstances.numAttributes(), true); if (!initC.containsKey(hk)) { m_ClusterCentroids.add(initInstances.instance(instIndex)); initC.put(hk, null); } initInstances.swap(j, instIndex); if (m_ClusterCentroids.numInstances() == m_NumClusters) { break; } } m_NumClusters = m_ClusterCentroids.numInstances(); // removing reference initInstances = null; int i; boolean converged = false; int emptyClusterCount; Instances[] tempI = new Instances[m_NumClusters]; m_squaredErrors = new double[m_NumClusters]; m_ClusterNominalCounts = new int[m_NumClusters][instances.numAttributes()][0]; m_ClusterMissingCounts = new int[m_NumClusters][instances.numAttributes()]; while (!converged) { emptyClusterCount = 0; m_Iterations++; converged = true; for (i = 0; i < instances.numInstances(); i++) { Instance toCluster = instances.instance(i); int newC = clusterProcessedInstance(toCluster, true); if (newC != clusterAssignments[i]) { converged = false; } clusterAssignments[i] = newC; } // update centroids m_ClusterCentroids = new Instances(instances, m_NumClusters); for (i = 0; i < m_NumClusters; i++) { tempI[i] = new Instances(instances, 0); } for (i = 0; i < instances.numInstances(); i++) { tempI[clusterAssignments[i]].add(instances.instance(i)); } for (i = 0; i < m_NumClusters; i++) { if (tempI[i].numInstances() == 0) { // empty cluster emptyClusterCount++; } else { moveCentroid(i, tempI[i], true); } } if (m_Iterations == m_MaxIterations) { converged = true; } if (emptyClusterCount > 0) { m_NumClusters -= emptyClusterCount; if (converged) { Instances[] t = new Instances[m_NumClusters]; int index = 0; for (int k = 0; k < tempI.length; k++) { if (tempI[k].numInstances() > 0) { t[index] = tempI[k]; for (i = 0; i < tempI[k].numAttributes(); i++) { m_ClusterNominalCounts[index][i] = m_ClusterNominalCounts[k][i]; } index++; } } tempI = t; } else { tempI = new Instances[m_NumClusters]; } } if (!converged) { m_squaredErrors = new double[m_NumClusters]; m_ClusterNominalCounts = new int[m_NumClusters][instances.numAttributes()][0]; } } if (m_displayStdDevs) { m_ClusterStdDevs = new Instances(instances, m_NumClusters); } m_ClusterSizes = new int[m_NumClusters]; for (i = 0; i < m_NumClusters; i++) { if (m_displayStdDevs) { double[] vals2 = new double[instances.numAttributes()]; for (int j = 0; j < instances.numAttributes(); j++) { if (instances.attribute(j).isNumeric()) { vals2[j] = Math.sqrt(tempI[i].variance(j)); } else { vals2[j] = Instance.missingValue(); } } m_ClusterStdDevs.add(new Instance(1.0, vals2)); } m_ClusterSizes[i] = tempI[i].numInstances(); } // Save memory!! m_DistanceFunction.clean(); if (!SESAME.SESAME_GUI) MyFirstClusterer.weka_gui = true; }
From source file:agnes.AgnesMain.java
public static Instances loadData(String filePath) { BufferedReader reader;//from w w w . ja va 2 s . c o m Instances data = null; try { reader = new BufferedReader(new FileReader(filePath)); data = new Instances(reader); reader.close(); data.setClassIndex(data.numAttributes() - 1); } catch (Exception e) { } return data; }
From source file:algoritmogeneticocluster.Cromossomo.java
private void classifica() { //SMO classifier = new SMO(); //HyperPipes classifier = new HyperPipes(); IBk classifier = new IBk(5); BufferedReader datafile = readDataFile(inId + ".arff"); Instances data; Evaluation eval;/* w ww . jav a 2 s .c om*/ try { data = new Instances(datafile); data.setClassIndex(data.numAttributes() - 1); eval = new Evaluation(data); Random rand = new Random(1); // usando semente = 1 int folds = 10; eval.crossValidateModel(classifier, data, folds, rand); //this.fitness = eval.pctCorrect(); //fitness = new BigDecimal(fitness).setScale(2, RoundingMode.HALF_UP).doubleValue();//arredondamento para duas casas pctAcerto = eval.pctCorrect(); pctAcerto = new BigDecimal(pctAcerto).setScale(2, RoundingMode.HALF_UP).doubleValue(); microAverage = getMicroAverage(eval, data); microAverage = new BigDecimal(microAverage).setScale(2, RoundingMode.HALF_UP).doubleValue(); macroAverage = getMacroAverage(eval, data); macroAverage = new BigDecimal(macroAverage).setScale(2, RoundingMode.HALF_UP).doubleValue(); } catch (Exception ex) { System.out.println("Erro ao tentar fazer a classificacao"); Logger.getLogger(WekaSimulation.class.getName()).log(Level.SEVERE, null, ex); } switch (metodoFitness) { case 1: fitness = pctAcerto; break; case 2: fitness = microAverage; break; case 3: fitness = macroAverage; break; default: break; } }
From source file:algoritmogeneticocluster.NewClass.java
public static void main(String[] args) throws Exception { BufferedReader datafile = readDataFile("tabela10.arff"); Instances data = new Instances(datafile); data.setClassIndex(data.numAttributes() - 1); // Do 10-split cross validation Instances[][] split = crossValidationSplit(data, 10); // Separate split into training and testing arrays Instances[] trainingSplits = split[0]; Instances[] testingSplits = split[1]; // Use a set of classifiers Classifier[] models = { new SMO(), new J48(), // a decision tree new PART(), new DecisionTable(), //decision table majority classifier new DecisionStump() //one-level decision tree };/*from w w w . j a va 2 s. c o m*/ // Run for each model for (int j = 0; j < models.length; j++) { // Collect every group of predictions for current model in a FastVector FastVector predictions = new FastVector(); // For each training-testing split pair, train and test the classifier for (int i = 0; i < trainingSplits.length; i++) { Evaluation validation = classify(models[j], trainingSplits[i], testingSplits[i]); predictions.appendElements(validation.predictions()); // Uncomment to see the summary for each training-testing pair. //System.out.println(models[j].toString()); } // Calculate overall accuracy of current classifier on all splits double accuracy = calculateAccuracy(predictions); // Print current classifier's name and accuracy in a complicated, // but nice-looking way. System.out.println("Accuracy of " + models[j].getClass().getSimpleName() + ": " + String.format("%.2f%%", accuracy) + "\n---------------------------------"); } }
From source file:algoritmogeneticocluster.WekaSimulation.java
/** * @param args the command line arguments *//*from www.j a v a 2s . c o m*/ public static void main(String[] args) { SMO classifier = new SMO(); HyperPipes hy = new HyperPipes(); // classifier.buildClassifier(trainset); BufferedReader datafile = readDataFile("tabela10.arff"); Instances data; Evaluation eval; try { data = new Instances(datafile); data.setClassIndex(data.numAttributes() - 1); eval = new Evaluation(data); Random rand = new Random(1); // using seed = 1 int folds = 10; eval.crossValidateModel(classifier, data, folds, rand); System.out.println(eval.toString()); System.out.println(eval.numInstances()); System.out.println(eval.correct()); System.out.println(eval.incorrect()); System.out.println(eval.pctCorrect()); System.out.println(eval.pctIncorrect()); } catch (Exception ex) { Logger.getLogger(WekaSimulation.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:ann.ANN.java
/** * @param args the command line arguments */// w w w . j a v a 2 s . c om public static void main(String[] args) throws Exception { // TODO code application logic here Scanner sc = new Scanner(System.in); ANNOptions annOptions = new ANNOptions(); String datasetURL; // System.out.println("Topology"); // System.out.println("1. Perceptron Training Rule"); // System.out.println("2. Delta Rule - Batch"); // System.out.println("3. Delta Rule - Incremental"); // System.out.println("4. Multi Layer Perceptron"); // annOptions.topologyOpt = sc.nextInt(); // System.out.println("Initial Weight"); // System.out.println("1. Random"); // System.out.println("2. Given"); // annOptions.weightOpt = sc.nextInt(); // if(annOptions.topologyOpt == 4){ // Multi Layer Perceptron // System.out.print("Hidden Layer: "); // annOptions.hiddenLayer = sc.nextInt(); // for (int i = 0 ; i < annOptions.hiddenLayer ; i++) { // System.out.print("Neuron in Layer " + i+1 + ": "); // int nNeuron = sc.nextInt(); // annOptions.layerNeuron.add(nNeuron); // } // System.out.print("Momentum: "); // annOptions.momentum = sc.nextDouble(); // } // // System.out.print("Learning Rate: "); // annOptions.learningRate = sc.nextDouble(); // // System.out.print("Threshold: "); // annOptions.threshold = sc.nextDouble(); // // System.out.print("MaxIteration: "); // annOptions.maxIteration = sc.nextInt(); // // System.out.println("Dataset URL: "); // datasetURL = sc.next(); datasetURL = "dataset/weather.nominal.arff"; // datasetURL = "dataset/weather.numeric.arff"; // datasetURL = "dataset/iris.arff"; Instances data = loadDataset(datasetURL); Classifier model = null; data.setClassIndex(data.numAttributes() - 1); if (annOptions.topologyOpt < 4) { // Perceptron Training Rule annOptions.initWeightsSLP(data); annOptions.saveConfiguration(annOptions); try { SingleLayerPerceptron singleLayerPerceptron = new SingleLayerPerceptron(); singleLayerPerceptron.buildClassifier(data); model = singleLayerPerceptron; crossValidation(model, data); } catch (Exception ex) { Logger.getLogger(ANN.class.getName()).log(Level.SEVERE, null, ex); } } else if (annOptions.topologyOpt == 4) { // Multi Layer Perceptron annOptions.initWeightsMLP(data); annOptions.saveConfiguration(annOptions); try { MultiLayerPerceptron multiLayerPerceptron = new MultiLayerPerceptron(); multiLayerPerceptron.buildClassifier(data); model = multiLayerPerceptron; crossValidation(model, data); } catch (Exception ex) { Logger.getLogger(ANN.class.getName()).log(Level.SEVERE, null, ex); } } }
From source file:ann.ANN.java
public void classify(String data_address, Classifier model) { try {/* www .j a v a 2 s . c om*/ Instances test = ConverterUtils.DataSource.read(data_address); test.setClassIndex(test.numAttributes() - 1); System.out.println("===================================="); System.out.println("=== Predictions on user test set ==="); System.out.println("===================================="); System.out.println("# - actual - predicted - distribution"); for (int i = 0; i < test.numInstances(); i++) { double pred = model.classifyInstance(test.instance(i)); double[] dist = model.distributionForInstance(test.instance(i)); System.out.print((i + 1) + " - "); System.out.print(test.instance(i).toString(test.classIndex()) + " - "); System.out.print(test.classAttribute().value((int) pred) + " - "); System.out.println(Utils.arrayToString(dist)); } System.out.println("\n"); } catch (Exception ex) { System.out.println("Tidak berhasil memprediksi hasil\n"); } }
From source file:ann.Main.java
public static void main(String[] args) { String trainPath = null;/*from w w w . j av a 2s. co m*/ String testPath = null; String weights = null; String predictPath = null; char activationFunction = MyANN.SIGMOID_FUNCTION, terminateCondition = MyANN.TERMINATE_MAX_ITERATION, learningRule = MyANN.PERCEPTRON_TRAINING_RULE, topology = MyANN.ONE_PERCEPTRON; double deltaMSE = 0.01; int maxIteration = 500; double learningRate = 0.3; double momentum = 0.2; int nbHidden = 0; int[] hiddenConf = null; boolean isCV = false; int numFolds = 10; boolean isEvaluate = false; if (args.length < 1 || args.length % 2 == 0) { System.out.println("Usage: ANN [-I <path>] [-t O|M] [-r P|B|D] [-h <layer>]" + "\n\t [-a N|G|T] [-L <rate>] [-m <momentum>] [-E D|I|B] [-d <mse>]" + "\n\t [-i <iteration>] [-e <path>|<n>] [-p <path>] <trainDataPath>"); System.out.println(""); System.out.println("-a N|G|T \t set activation function for OnePerceptron"); System.out.println("\t\t N=SIGN, G=SIGMOID, T=STEP"); System.out.println("-d <mse> \t set MSE = <mse> for terminate condition"); System.out.println("-E D|I|B \t\t set terminate condition, D=by MSE, I=by iteration"); System.out.println("-e <path>|<n> \t set test data using <path> or cross-validation w/ folds = <n>"); System.out.println("-h <layer> \t set hidden layer. <layer>=0 no hidden layer"); System.out.println("\t\t <layer>=2 => 1 hidden layer with 2 nodes"); System.out.println("\t\t <layer>=2,3 => 2 hidden layer with 2 nodes on first and 3 on second layer"); System.out.println("-I <path> \t set initial weight from <path>"); System.out.println("-i <iteration> \t set max iteration for terminate condition"); System.out.println("-L <rate> \t set learning rate = <rate>"); System.out.println("-m <momentum> \t set momentum = <momentum>"); System.out.println("-p <path> \t set data to predict"); System.out.println("-r P|B|D \t set learning rule for OnePerceptron "); System.out.println("\t\t P=Perceptron training rule,B=Batch, D=DeltaRule"); System.out.println("-t O|M \t\t set topology, O=OnePerceptron, M=MLP"); return; } else { trainPath = args[args.length - 1]; int i = 0; while (i < args.length - 1) { switch (args[i]) { case "-a": switch (args[i + 1]) { case "N": activationFunction = MyANN.SIGN_FUNCTION; break; case "G": activationFunction = MyANN.SIGMOID_FUNCTION; break; case "T": activationFunction = MyANN.STEP_FUNCTION; break; default: break; } break; case "-d": deltaMSE = Double.valueOf(args[i + 1]); break; case "-E": switch (args[i + 1]) { case "D": terminateCondition = MyANN.TERMINATE_MSE; break; case "I": terminateCondition = MyANN.TERMINATE_MAX_ITERATION; break; case "B": terminateCondition = MyANN.TERMINATE_BOTH; default: break; } break; case "-e": if (args[i + 1].length() <= 2) { numFolds = Integer.parseInt(args[i + 1]); isCV = true; } else { isEvaluate = true; testPath = args[i + 1]; } break; case "-h": String[] nbl = args[i + 1].split(","); if (nbl.length == 1) { nbHidden = Integer.parseInt(nbl[0]); if (nbHidden != 0) { hiddenConf = new int[1]; hiddenConf[0] = nbHidden; nbHidden = 1; } } else { nbHidden = nbl.length; hiddenConf = new int[nbHidden]; for (int j = 0; j < nbHidden; j++) { hiddenConf[j] = Integer.parseInt(nbl[j]); } } break; case "-I": weights = args[i + 1]; break; case "-i": maxIteration = Integer.parseInt(args[i + 1]); break; case "-L": learningRate = Double.parseDouble(args[i + 1]); break; case "-m": momentum = Double.parseDouble(args[i + 1]); break; case "-p": predictPath = args[i + 1]; break; case "-r": switch (args[i + 1]) { case "P": learningRule = MyANN.PERCEPTRON_TRAINING_RULE; break; case "B": learningRule = MyANN.BATCH_GRADIENT_DESCENT; break; case "D": learningRule = MyANN.DELTA_RULE; break; default: break; } break; case "-t": switch (args[i + 1]) { case "O": topology = MyANN.ONE_PERCEPTRON; break; case "M": topology = MyANN.MULTILAYER_PERCEPTRON; break; default: break; } break; default: break; } i += 2; } } // persiapkan data Instances trainData = null; Instances testData = null; Instances predictData = null; try { ConverterUtils.DataSource source = new ConverterUtils.DataSource(trainPath); trainData = source.getDataSet(); if (trainData.classIndex() == -1) { trainData.setClassIndex(trainData.numAttributes() - 1); } if (testPath != null) { source = new ConverterUtils.DataSource(testPath); testData = source.getDataSet(); if (testData.classIndex() == -1) { testData.setClassIndex(testData.numAttributes() - 1); } } if (predictPath != null) { source = new ConverterUtils.DataSource(predictPath); predictData = source.getDataSet(); if (predictData.classIndex() == -1) { predictData.setClassIndex(predictData.numAttributes() - 1); } } } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } // persiapkan model dan parameter MyANN myAnn = new MyANN(); WeightParser wp = null; if (weights != null) { wp = new WeightParser(weights); myAnn.setInitialWeight(wp.weight); } myAnn.setActivationFunction(activationFunction); myAnn.setDeltaMSE(deltaMSE); myAnn.setLearningRate(learningRate); myAnn.setLearningRule(learningRule); myAnn.setMaxIteration(maxIteration); myAnn.setMomentum(momentum); myAnn.setTerminationCondition(terminateCondition); myAnn.setThreshold(momentum); myAnn.setTopology(topology); int[] nbLayer = new int[2]; if (nbHidden != 0) { nbLayer = new int[2 + nbHidden]; for (int j = 1; j < nbLayer.length - 1; j++) { nbLayer[j] = hiddenConf[j - 1]; } } nbLayer[0] = trainData.numAttributes() - 1; if (trainData.classAttribute().isNominal()) nbLayer[nbLayer.length - 1] = trainData.classAttribute().numValues(); else nbLayer[nbLayer.length - 1] = 1; myAnn.setNbLayers(nbLayer); // debug: cek kondigurasi System.out.println("training data: " + trainPath); System.out.println("settings:"); myAnn.printSetting(); System.out.println(""); // klasifikasi System.out.println("start classifiying..."); try { myAnn.buildClassifier(trainData); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } myAnn.printSummary(); System.out.println("done"); System.out.println("-------------------------------------------------"); System.out.print("evaluating "); int[][] result = null; int nbData = trainData.numInstances(); if (isCV) { System.out.println("using " + numFolds + "-folds cross validation"); result = myAnn.crossValidation(trainData, numFolds, new Random(1)); } else if (isEvaluate) { System.out.println("using testData: " + testPath); result = myAnn.evaluate(testData); nbData = testData.numInstances(); } else { System.out.println("using trainData"); result = myAnn.evaluate(trainData); } System.out.println(""); System.out.println("result:"); double accuracy = 0.0; // a+d/total double[] precision = new double[result.length]; // a/a+c; prec[i] = M[i,i] / sumj(M[j,i]) double[] recall = new double[result[0].length]; // a/a+b; rec[i] = M[i,i] / sumj(M[i,j]) for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[0].length; j++) { System.out.print(result[i][j] + " "); if (i == j) { accuracy += result[i][j]; } } System.out.println(""); } // precision for (int i = 0; i < precision.length; i++) { double sum = 0.0; for (int j = 0; j < result[0].length; j++) { sum += result[j][i]; } precision[i] = result[i][i] / sum; } // recall for (int i = 0; i < recall.length; i++) { double sum = 0.0; for (int j = 0; j < result[0].length; j++) { sum += result[i][j]; } recall[i] = result[i][i] / sum; } accuracy /= nbData; System.out.println(""); System.out.println("accuracy: " + accuracy); System.out.println("precision: "); for (double p : precision) { System.out.println(p); } System.out.println(""); System.out.println("recall: "); for (double r : recall) System.out.println(r); System.out.println(""); System.out.println("-------------------------------------------------"); if (predictPath != null) { System.out.println("predicting: " + predictPath); for (int i = 0; i < predictData.numInstances(); i++) { try { int idx = myAnn.predictClassIndex(myAnn.distributionForInstance(predictData.instance(i))); System.out.println("instance[" + (i) + "]: " + trainData.classAttribute().value(idx)); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } System.out.println("done"); } /* try { File file = new File("/media/yusuf/5652859E52858389/Data/Kuliah/Semester 7/ML/WekaMiddle/weather.nominal.arff"); File unlabel = new File("/media/yusuf/5652859E52858389/Data/Kuliah/Semester 7/ML/WekaMiddle/weather.nominal.unlabeled.arff"); Instances data, test; ConverterUtils.DataSource source = new ConverterUtils.DataSource(file.getPath()); data = source.getDataSet(); if (data.classIndex() == -1) { data.setClassIndex(data.numAttributes() - 1); } source = new ConverterUtils.DataSource(unlabel.getPath()); test = source.getDataSet(); if (test.classIndex() == -1) { test.setClassIndex(data.numAttributes() - 1); } WeightParser wp = new WeightParser("/media/yusuf/5652859E52858389/Data/Kuliah/Semester 7/ML/khaidzir_myANN/initial.weight"); MyANN myANN = new MyANN(); int[] nbLayers = {4, 3, 2}; myANN.setNbLayers(nbLayers); myANN.setDeltaMSE(0.001); //myANN.setMomentum(0.2); myANN.setLearningRate(0.1); myANN.setTopology(MyANN.MULTILAYER_PERCEPTRON); myANN.setLearningRule(MyANN.PERCEPTRON_TRAINING_RULE); myANN.setActivationFunction(MyANN.SIGMOID_FUNCTION); myANN.setMaxIteration(10000); myANN.setTerminationCondition(MyANN.TERMINATE_MAX_ITERATION); //myANN.setInitialWeight(wp.weight); myANN.buildClassifier(data); int[][] ev = myANN.evaluate(data); for (int[] ev1 : ev) { for (int ev2 : ev1) { System.out.print(ev2+", "); } System.out.println(""); } System.out.println(""); //ev = myANN.crossValidation(data, 10, new Random(1)); for (int[] ev1 : ev) { for (int ev2 : ev1) { System.out.print(ev2+", "); } System.out.println(""); } System.out.println(""); /* myANN.buildClassifier(data); int[][] cm = myANN.evaluate(data); double accuracy = 0.0; // a+d/total double[] precision = new double[cm.length]; // a/a+c; prec[i] = M[i,i] / sumj(M[j,i]) double[] recall = new double[cm[0].length]; // a/a+b; rec[i] = M[i,i] / sumj(M[i,j]) for (int i = 0; i < cm.length; i++) { for (int j = 0; j < cm[0].length; j++) { System.out.print(cm[i][j] + " "); if (i==j) { accuracy += cm[i][j]; } } System.out.println(""); } // precision for(int i = 0; i < precision.length; i++) { double sum = 0.0; for (int j = 0; j < cm[0].length; j++) { sum += cm[j][i]; } precision[i] = cm[i][i] / sum; } // recall for(int i = 0; i < recall.length; i++) { double sum = 0.0; for (int j = 0; j < cm[0].length; j++) { sum += cm[i][j]; } recall[i] = cm[i][i] / sum; } accuracy /= data.numInstances(); System.out.println("accuracy: "+accuracy); System.out.println("precision: "); for(double p : precision) { System.out.print(p+", "); } System.out.println(""); System.out.println("recall: "); for (double r : recall) System.out.print(r+", "); System.out.println(""); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } */ }
From source file:ANN.MultilayerPerceptron.java
public static void main(String[] args) throws Exception { ConverterUtils.DataSource source = new ConverterUtils.DataSource( ("D:\\Program Files\\Weka-3-8\\data\\iris.arff")); Instances train = source.getDataSet(); Normalize nm = new Normalize(); nm.setInputFormat(train);//from w w w . jav a 2 s. c om train = Filter.useFilter(train, nm); train.setClassIndex(train.numAttributes() - 1); System.out.println(); // System.out.println(i + " "+0.8); MultilayerPerceptron slp = new MultilayerPerceptron(train, 0.1, 5000, 14); slp.buildClassifier(train); Evaluation eval = new Evaluation(train); eval.evaluateModel(slp, train); System.out.println(eval.toSummaryString()); System.out.print(eval.toMatrixString()); }
From source file:ANN.MultiplePerceptron.java
public static void main(String[] args) throws Exception { ConverterUtils.DataSource source = new ConverterUtils.DataSource( ("D:\\Program Files\\Weka-3-8\\data\\iris.arff")); Instances train = source.getDataSet(); Normalize nm = new Normalize(); nm.setInputFormat(train);/*ww w.j a va 2 s.c o m*/ train = Filter.useFilter(train, nm); train.setClassIndex(train.numAttributes() - 1); MultiplePerceptron mlp = new MultiplePerceptron(train, 20, 0.3); mlp.buildClassifier(train); Evaluation eval = new Evaluation(train); eval.evaluateModel(mlp, train); System.out.println(eval.toSummaryString()); System.out.print(eval.toMatrixString()); }