List of usage examples for weka.classifiers.functions LibSVM LibSVM
LibSVM
From source file:cish.CISH.java
private void trainClassifier() { try {/*from ww w. j a va 2s. c om*/ LibSVMLoader loader = new LibSVMLoader(); loader.setSource(getClass().getResource("/cish/traindata.libsvm")); Instances traindata = loader.getDataSet(); // Set the class attribute as nominal NumericToNominal filter = new NumericToNominal(); filter.setAttributeIndices("last"); filter.setInputFormat(traindata); dataset = Filter.useFilter(traindata, filter); // Train the LibSVM classifier = new LibSVM(); classifier.setOptions(new String[] { "-C", "8", "-G", "0.0625" }); System.out.println("CISH classifier has options"); for (String o : classifier.getOptions()) { System.out.print(o + " "); } System.out.println(); classifier.buildClassifier(dataset); } catch (IOException ex) { Logger.getLogger(CISH.class.getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { Logger.getLogger(CISH.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:com.guidefreitas.locator.services.PredictionService.java
public Evaluation train() { try {/*w w w . ja v a2s .co m*/ String arffData = this.generateTrainData(); InputStream stream = new ByteArrayInputStream(arffData.getBytes(StandardCharsets.UTF_8)); DataSource source = new DataSource(stream); Instances data = source.getDataSet(); data.setClassIndex(data.numAttributes() - 1); this.classifier = new LibSVM(); this.classifier.setKernelType(new SelectedTag(LibSVM.KERNELTYPE_POLYNOMIAL, LibSVM.TAGS_KERNELTYPE)); this.classifier.setSVMType(new SelectedTag(LibSVM.SVMTYPE_C_SVC, LibSVM.TAGS_SVMTYPE)); Evaluation eval = new Evaluation(data); eval.crossValidateModel(this.classifier, data, 10, new Random(1)); this.classifier.buildClassifier(data); return eval; } catch (Exception ex) { Logger.getLogger(PredictionService.class.getName()).log(Level.SEVERE, null, ex); } return null; }
From source file:com.Machine_learning.model.MySupportVectorMachine.java
public MySupportVectorMachine(Instances data) { dataInstances = data;/* ww w. j av a 2 s .co m*/ try { classifier = new LibSVM(); classifier.setOptions(splitOptions(options)); classifier.buildClassifier(data); eval = new Evaluation(dataInstances); } catch (Exception ex) { System.out.println("THROWN " + ex.getMessage()); Logger.getLogger(MySupportVectorMachine.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:com.Machine_learning.model.MySupportVectorMachine.java
public void applyMethod(String method) { try {/*www . j av a2 s .co m*/ List<Instances> datasets = new ArrayList<>(); if (method.equals("cross-validation")) { eval.crossValidateModel(classifier, dataInstances, 4, new Random(1)); return; } else if (method.equals("test-set")) { Preprocessing preprocessTestSet = new Preprocessing(null); datasets = preprocessTestSet.getDataSets( MyNaiveBayes.class.getResource("/data/categories-per-train.arff").getPath(), MyNaiveBayes.class.getResource("/data/2017-articles-correct.arff").getPath()); } else if (method.equals("percentage")) { Preprocessing preprocessTestSet = new Preprocessing(null); datasets = preprocessTestSet.getDataSets( MyNaiveBayes.class.getResource("/data/categories-per-train.arff").getPath(), MyNaiveBayes.class.getResource("/data/categories-per-test.arff").getPath()); } else { return; } classifier = new LibSVM(); classifier.setOptions(splitOptions(options)); classifier.buildClassifier(datasets.get(0)); eval = new Evaluation(datasets.get(0)); eval.evaluateModel(classifier, datasets.get(1)); } catch (Exception ex) { Logger.getLogger(MyNaiveBayes.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:core.Core.java
public String run() throws Exception { ConverterUtils.DataSource source = new ConverterUtils.DataSource("src/files/powerpuffgirls.arff"); HashMap<String, Classifier> hash = new HashMap<>(); hash.put("J48", new J48()); hash.put("NaiveBayes", new NaiveBayes()); hash.put("IBk=1", new IBk(1)); hash.put("IBk=3", new IBk(3)); hash.put("MultilayerPerceptron", new MultilayerPerceptron()); LibSVM svm = new LibSVM(); hash.put("LibSVM", svm); Instances ins = source.getDataSet(); ins.setClassIndex(4);/* ww w. j a va 2s .c om*/ StringBuilder sb = new StringBuilder(); int blossom = 0; int bubbles = 0; Instance test = null; for (Map.Entry<String, Classifier> entry : hash.entrySet()) { Classifier c = entry.getValue(); c.buildClassifier(ins); test = new Instance(5); float[] array = classifyImage(); test.setDataset(ins); test.setValue(0, array[0]); test.setValue(1, array[1]); test.setValue(2, array[2]); test.setValue(3, array[3]); double prob[] = c.distributionForInstance(test); sb.append("<em>"); sb.append(entry.getKey()); sb.append(":</em>"); sb.append("<br/>"); for (int i = 0; i < prob.length; i++) { String value = test.classAttribute().value(i); if (getRoundedValue(prob[i]) >= CUT_NOTE) { if (getClassValue(value)) blossom++; else bubbles++; } sb.append(getClassName(value)); sb.append(": "); sb.append("<strong>"); sb.append(getRoundedValue(prob[i]) < CUT_NOTE ? "Rejeitado!" : getValueFormatted(prob[i])); sb.append("</strong>"); sb.append(" "); } sb.append("<br/>"); System.out.println("blossom: " + blossom); System.out.println("bubbles: " + bubbles); System.out.println("=================\n"); } sb.append(blossom > bubbles ? "<h3> a Florzinha!</h3>" : "<h3> a Lindinha!</h3>"); blossom = 0; bubbles = 0; return sb.toString(); }
From source file:de.upb.timok.oneclassclassifier.WekaSvmClassifier.java
License:Open Source License
public WekaSvmClassifier(int useProbability, double gamma, double nu, double costs, int kernelType, double eps, int degree, ScalingMethod scalingMethod) { wekaSvm = new LibSVM(); wekaSvm.setCost(costs);//from ww w . ja va 2 s . c om wekaSvm.setGamma(gamma); wekaSvm.setNu(nu); wekaSvm.setEps(eps); wekaSvm.setDegree(degree); if (scalingMethod == ScalingMethod.NORMALIZE) { filter = new Normalize(); } else if (scalingMethod == ScalingMethod.STANDARDIZE) { filter = new Standardize(); } if (useProbability > 0) { wekaSvm.setProbabilityEstimates(true); } else { wekaSvm.setProbabilityEstimates(false); } // * Set type of SVM (default: 0) // * 0 = C-SVC // * 1 = nu-SVC // * 2 = one-class SVM // * 3 = epsilon-SVR // * 4 = nu-SVR</pre> wekaSvm.setSVMType(new SelectedTag(LibSVM.SVMTYPE_ONE_CLASS_SVM, LibSVM.TAGS_SVMTYPE)); // * <pre> -K <int> // * Set type of kernel function (default: 2) // * 0 = linear: u'*v // * 1 = polynomial: (gamma*u'*v + coef0)^degree // * 2 = radial basis function: exp(-gamma*|u-v|^2) // * 3 = sigmoid: tanh(gamma*u'*v + coef0)</pre> wekaSvm.setKernelType(new SelectedTag(kernelType, LibSVM.TAGS_KERNELTYPE)); }
From source file:fr.unice.i3s.rockflows.experiments.main.IntermediateExecutor.java
private List<InfoClassifier> inputClassifier(Dataset original) throws Exception { List<InfoClassifier> cls = new ArrayList<>(); int id = 0;//from w w w .j ava2s . c o m //LogisticRegression: InfoClassifier ic1 = new InfoClassifier(id++); ic1.classifier = new Logistic(); ic1.name = "Logistic Regression"; ic1.properties.requireNumericDataset = true; cls.add(ic1); //SVM: InfoClassifier ic2 = new InfoClassifier(id++); LibSVM ccc = new LibSVM(); //disable ccc.setOptions(new String[] { "-J", //Turn off nominal to binary conversion. "-V" //Turn off missing value replacement }); //ccc.setSVMType(new SelectedTag(LibSVM.SVMTYPE_C_SVC, LibSVM.TAGS_SVMTYPE)); //ccc.setKernelType(new SelectedTag(LibSVM.KERNELTYPE_RBF, LibSVM.TAGS_KERNELTYPE)); //ccc.setEps(0.001); //tolerance ic2.classifier = ccc; ic2.name = "Svm"; ic2.properties.requireNumericDataset = true; cls.add(ic2); //J48: InfoClassifier ic3 = new InfoClassifier(id++); ic3.classifier = new J48(); ic3.name = "J48"; ic3.properties.manageMissingValues = true; cls.add(ic3); //NBTree: InfoClassifier ic4 = new InfoClassifier(id++); ic4.classifier = new NBTree(); ic4.name = "NBTree"; ic4.properties.manageMissingValues = true; cls.add(ic4); //RandomForest: InfoClassifier ic5 = new InfoClassifier(id++); RandomForest ccc2 = new RandomForest(); ccc2.setNumTrees(500); ccc2.setMaxDepth(0); ic5.classifier = ccc2; ic5.name = "Random Forest"; ic5.properties.manageMissingValues = true; cls.add(ic5); //Logistic Model Trees (LMT): InfoClassifier ic6 = new InfoClassifier(id++); ic6.classifier = new LMT(); ic6.name = "Logistic Model Tree"; ic6.properties.manageMissingValues = true; cls.add(ic6); //Alternating Decision Trees (ADTree): InfoClassifier ic7 = new InfoClassifier(id++); if (original.trainingSet.numClasses() > 2) { MultiClassClassifier mc = new MultiClassClassifier(); mc.setOptions(new String[] { "-M", "3" }); //1 vs 1 mc.setClassifier(new ADTree()); ic7.classifier = mc; ic7.name = "1-vs-1 Alternating Decision Tree"; } else { ic7.classifier = new ADTree(); ic7.name = "Alternating Decision Tree"; } ic7.properties.manageMultiClass = false; ic7.properties.manageMissingValues = true; cls.add(ic7); //Naive Bayes: InfoClassifier ic8 = new InfoClassifier(id++); ic8.classifier = new NaiveBayes(); ic8.name = "Naive Bayes"; ic8.properties.manageMissingValues = true; cls.add(ic8); //Bayesian Networks: /* All Bayes network algorithms implemented in Weka assume the following for the data set: all variables are discrete finite variables. If you have a data set with continuous variables, you can use the following filter to discretize them: weka.filters.unsupervised.attribute.Discretize no instances have missing values. If there are missing values in the data set, values are filled in using the following filter: weka.filters.unsupervised.attribute.ReplaceMissingValues The first step performed by buildClassifier is checking if the data set fulfills those assumptions. If those assumptions are not met, the data set is automatically filtered and a warning is written to STDERR.2 */ InfoClassifier ic9 = new InfoClassifier(id++); ic9.classifier = new BayesNet(); ic9.name = "Bayesian Network"; ic9.properties.requireNominalDataset = true; cls.add(ic9); //IBK InfoClassifier ic10 = new InfoClassifier(id++); ic10.classifier = new IBk(); ic10.name = "IBk"; ic10.properties.manageMissingValues = true; cls.add(ic10); //JRip: InfoClassifier ic11 = new InfoClassifier(id++); ic11.classifier = new JRip(); ic11.name = "JRip"; ic11.properties.manageMissingValues = true; cls.add(ic11); //MultilayerPerceptron(MLP): InfoClassifier ic12 = new InfoClassifier(id++); ic12.classifier = new MultilayerPerceptron(); ic12.name = "Multillayer Perceptron"; ic12.properties.requireNumericDataset = true; cls.add(ic12); //Bagging RepTree: InfoClassifier ic14 = new InfoClassifier(id++); REPTree base3 = new REPTree(); Bagging ccc4 = new Bagging(); ccc4.setClassifier(base3); ic14.classifier = ccc4; ic14.name = "Bagging RepTree"; ic14.properties.manageMissingValues = true; cls.add(ic14); //Bagging J48 InfoClassifier ic15 = new InfoClassifier(id++); Bagging ccc5 = new Bagging(); ccc5.setClassifier(new J48()); ic15.classifier = ccc5; ic15.name = "Bagging J48"; ic15.properties.manageMissingValues = true; cls.add(ic15); //Bagging NBTree InfoClassifier ic16 = new InfoClassifier(id++); Bagging ccc6 = new Bagging(); ccc6.setClassifier(new NBTree()); ic16.classifier = ccc6; ic16.name = "Bagging NBTree"; ic16.properties.manageMissingValues = true; cls.add(ic16); //Bagging OneR: InfoClassifier ic17 = new InfoClassifier(id++); Bagging ccc7 = new Bagging(); ccc7.setClassifier(new OneR()); ic17.classifier = ccc7; ic17.name = "Bagging OneR"; ic17.properties.requireNominalDataset = true; ic17.properties.manageMissingValues = true; cls.add(ic17); //Bagging Jrip InfoClassifier ic18 = new InfoClassifier(id++); Bagging ccc8 = new Bagging(); ccc8.setClassifier(new JRip()); ic18.classifier = ccc8; ic18.name = "Bagging JRip"; ic18.properties.manageMissingValues = true; cls.add(ic18); //MultiboostAB DecisionStump InfoClassifier ic24 = new InfoClassifier(id++); MultiBoostAB ccc14 = new MultiBoostAB(); ccc14.setClassifier(new DecisionStump()); ic24.classifier = ccc14; ic24.name = "MultiboostAB DecisionStump"; ic24.properties.manageMissingValues = true; cls.add(ic24); //MultiboostAB OneR InfoClassifier ic25 = new InfoClassifier(id++); MultiBoostAB ccc15 = new MultiBoostAB(); ccc15.setClassifier(new OneR()); ic25.classifier = ccc15; ic25.name = "MultiboostAB OneR"; ic25.properties.requireNominalDataset = true; cls.add(ic25); //MultiboostAB J48 InfoClassifier ic27 = new InfoClassifier(id++); MultiBoostAB ccc17 = new MultiBoostAB(); ccc17.setClassifier(new J48()); ic27.classifier = ccc17; ic27.name = "MultiboostAB J48"; ic27.properties.manageMissingValues = true; cls.add(ic27); //MultiboostAB Jrip InfoClassifier ic28 = new InfoClassifier(id++); MultiBoostAB ccc18 = new MultiBoostAB(); ccc18.setClassifier(new JRip()); ic28.classifier = ccc18; ic28.name = "MultiboostAB JRip"; cls.add(ic28); //MultiboostAB NBTree InfoClassifier ic29 = new InfoClassifier(id++); MultiBoostAB ccc19 = new MultiBoostAB(); ccc19.setClassifier(new NBTree()); ic29.classifier = ccc19; ic29.name = "MultiboostAB NBTree"; ic29.properties.manageMissingValues = true; cls.add(ic29); //RotationForest RandomTree InfoClassifier ic32 = new InfoClassifier(id++); RotationForest ccc21 = new RotationForest(); RandomTree rtr5 = new RandomTree(); rtr5.setMinNum(2); rtr5.setAllowUnclassifiedInstances(true); ccc21.setClassifier(rtr5); ic32.classifier = ccc21; ic32.name = "RotationForest RandomTree"; ic32.properties.manageMissingValues = true; cls.add(ic32); //RotationForest J48: InfoClassifier ic33 = new InfoClassifier(id++); J48 base6 = new J48(); RotationForest ccc22 = new RotationForest(); ccc22.setClassifier(base6); ic33.classifier = ccc22; ic33.name = "RotationForest J48"; ic33.properties.manageMissingValues = true; cls.add(ic33); //RandomCommittee RandomTree: InfoClassifier ic34 = new InfoClassifier(id++); RandomTree rtr4 = new RandomTree(); rtr4.setMinNum(2); rtr4.setAllowUnclassifiedInstances(true); RandomCommittee ccc23 = new RandomCommittee(); ccc23.setClassifier(rtr4); ic34.classifier = ccc23; ic34.name = "RandomComittee RandomTree"; ic34.properties.manageMissingValues = true; cls.add(ic34); //Class via Clustering: SimpleKMeans //N.B: it can't handle date attributes InfoClassifier ic35 = new InfoClassifier(id++); ClassificationViaClustering ccc24 = new ClassificationViaClustering(); SimpleKMeans km = new SimpleKMeans(); km.setNumClusters(original.trainingSet.numClasses()); ccc24.setClusterer(km); ic35.classifier = ccc24; ic35.name = "Classification via Clustering: KMeans"; ic35.properties.requireNumericDataset = true; cls.add(ic35); //Class via Clustering: FarthestFirst InfoClassifier ic36 = new InfoClassifier(id++); ClassificationViaClustering ccc25 = new ClassificationViaClustering(); FarthestFirst ff = new FarthestFirst(); ff.setNumClusters(original.trainingSet.numClasses()); ccc25.setClusterer(ff); ic36.classifier = ccc25; ic36.name = "Classification via Clustering: FarthestFirst"; ic36.properties.requireNumericDataset = true; cls.add(ic36); //SMO InfoClassifier ic37 = new InfoClassifier(id++); ic37.classifier = new SMO(); ic37.properties.requireNumericDataset = true; ic37.properties.manageMultiClass = false; ic37.name = "Smo"; cls.add(ic37); //Random Subspace InfoClassifier ic38 = new InfoClassifier(id++); RandomSubSpace sub = new RandomSubSpace(); sub.setClassifier(new REPTree()); ic38.classifier = sub; ic38.name = "Random Subspaces of RepTree"; ic38.properties.manageMissingValues = true; cls.add(ic38); //PART rule based InfoClassifier ic39 = new InfoClassifier(id++); PART p39 = new PART(); p39.setOptions(new String[] { "-C", "0.5" }); ic39.classifier = new PART(); ic39.name = "PART"; ic39.properties.manageMissingValues = true; cls.add(ic39); //Decision-Table / Naive Bayes InfoClassifier ic40 = new InfoClassifier(id++); ic40.classifier = new DTNB(); ic40.name = "DTNB"; ic40.properties.manageMissingValues = true; cls.add(ic40); //Ridor Rule based InfoClassifier ic41 = new InfoClassifier(id++); ic41.classifier = new Ridor(); ic41.name = "Ridor"; ic41.properties.manageMissingValues = true; cls.add(ic41); //Decision Table InfoClassifier ic42 = new InfoClassifier(id++); ic42.classifier = new DecisionTable(); ic42.name = "Decision Table"; ic42.properties.manageMissingValues = true; cls.add(ic42); //Conjunctive Rule InfoClassifier ic43 = new InfoClassifier(id++); ic43.classifier = new ConjunctiveRule(); ic43.name = "Conjunctive Rule"; ic43.properties.manageMissingValues = true; cls.add(ic43); //LogitBoost Decision Stump InfoClassifier ic44 = new InfoClassifier(id++); LogitBoost lb = new LogitBoost(); lb.setOptions(new String[] { "-L", "1.79" }); lb.setClassifier(new DecisionStump()); ic44.classifier = lb; ic44.name = "LogitBoost Decision Stump"; ic44.properties.manageMissingValues = true; cls.add(ic44); //Raced Incremental Logit Boost, Decision Stump InfoClassifier ic45 = new InfoClassifier(id++); RacedIncrementalLogitBoost rlb = new RacedIncrementalLogitBoost(); rlb.setClassifier(new DecisionStump()); ic45.classifier = rlb; ic45.name = "Raced Incremental Logit Boost, Decision Stumps"; ic45.properties.manageMissingValues = true; cls.add(ic45); //AdaboostM1 decision stump InfoClassifier ic46 = new InfoClassifier(id++); AdaBoostM1 adm = new AdaBoostM1(); adm.setClassifier(new DecisionStump()); ic46.classifier = adm; ic46.name = "AdaboostM1, Decision Stumps"; ic46.properties.manageMissingValues = true; cls.add(ic46); //AdaboostM1 J48 InfoClassifier ic47 = new InfoClassifier(id++); AdaBoostM1 adm2 = new AdaBoostM1(); adm2.setClassifier(new J48()); ic47.classifier = adm2; ic47.name = "AdaboostM1, J48"; ic47.properties.manageMissingValues = true; cls.add(ic47); //MultiboostAb Decision Table InfoClassifier ic48 = new InfoClassifier(id++); MultiBoostAB mba = new MultiBoostAB(); mba.setClassifier(new DecisionTable()); ic48.classifier = mba; ic48.name = "MultiboostAB, Decision Table"; ic48.properties.manageMissingValues = true; cls.add(ic48); //Multiboost NaiveBayes InfoClassifier ic49 = new InfoClassifier(id++); MultiBoostAB mba2 = new MultiBoostAB(); mba2.setClassifier(new NaiveBayes()); ic49.classifier = mba2; ic49.name = "MultiboostAB, Naive Bayes"; ic49.properties.manageMissingValues = true; cls.add(ic49); //Multiboost PART InfoClassifier ic50 = new InfoClassifier(id++); MultiBoostAB mba3 = new MultiBoostAB(); mba3.setClassifier(new PART()); ic50.classifier = mba3; ic50.name = "MultiboostAB, PART"; ic50.properties.manageMissingValues = true; cls.add(ic50); //Multiboost Random Tree InfoClassifier ic51 = new InfoClassifier(id++); MultiBoostAB mba4 = new MultiBoostAB(); RandomTree rtr3 = new RandomTree(); rtr3.setMinNum(2); rtr3.setAllowUnclassifiedInstances(true); mba4.setClassifier(rtr3); ic51.classifier = mba4; ic51.name = "MultiboostAB, RandomTree"; ic51.properties.manageMissingValues = true; cls.add(ic51); //Multiboost Rep Tree InfoClassifier ic52 = new InfoClassifier(id++); MultiBoostAB mba5 = new MultiBoostAB(); mba5.setClassifier(new REPTree()); ic52.classifier = mba5; ic52.name = "MultiboostAB, RepTree"; ic52.properties.manageMissingValues = true; cls.add(ic52); //Bagging Decision Stump InfoClassifier ic53 = new InfoClassifier(id++); Bagging bag = new Bagging(); bag.setClassifier(new DecisionStump()); ic53.classifier = bag; ic53.name = "Bagging Decision Stump"; ic53.properties.manageMissingValues = true; cls.add(ic53); //Bagging Decision Table InfoClassifier ic54 = new InfoClassifier(id++); Bagging bag1 = new Bagging(); bag1.setClassifier(new DecisionTable()); ic54.classifier = bag1; ic54.name = "Bagging Decision Table"; ic54.properties.manageMissingValues = true; cls.add(ic54); //Bagging HyperPipes InfoClassifier ic55 = new InfoClassifier(id++); Bagging bag2 = new Bagging(); bag2.setClassifier(new HyperPipes()); ic55.classifier = bag2; ic55.name = "Bagging Hyper Pipes"; cls.add(ic55); //Bagging Naive Bayes InfoClassifier ic56 = new InfoClassifier(id++); Bagging bag3 = new Bagging(); bag3.setClassifier(new NaiveBayes()); ic56.classifier = bag3; ic56.name = "Bagging Naive Bayes"; ic56.properties.manageMissingValues = true; cls.add(ic56); //Bagging PART InfoClassifier ic57 = new InfoClassifier(id++); Bagging bag4 = new Bagging(); bag4.setClassifier(new PART()); ic57.classifier = bag4; ic57.name = "Bagging PART"; ic57.properties.manageMissingValues = true; cls.add(ic57); //Bagging RandomTree InfoClassifier ic58 = new InfoClassifier(id++); Bagging bag5 = new Bagging(); RandomTree rtr2 = new RandomTree(); rtr2.setMinNum(2); rtr2.setAllowUnclassifiedInstances(true); bag5.setClassifier(rtr2); ic58.classifier = bag5; ic58.name = "Bagging RandomTree"; ic58.properties.manageMissingValues = true; cls.add(ic58); //NNge InfoClassifier ic59 = new InfoClassifier(id++); NNge nng = new NNge(); nng.setNumFoldersMIOption(1); nng.setNumAttemptsOfGeneOption(5); ic59.classifier = nng; ic59.name = "NNge"; cls.add(ic59); //OrdinalClassClassifier J48 InfoClassifier ic60 = new InfoClassifier(id++); OrdinalClassClassifier occ = new OrdinalClassClassifier(); occ.setClassifier(new J48()); ic60.classifier = occ; ic60.name = "OrdinalClassClassifier J48"; ic60.properties.manageMissingValues = true; cls.add(ic60); //Hyper Pipes InfoClassifier ic61 = new InfoClassifier(id++); ic61.classifier = new HyperPipes(); ic61.name = "Hyper Pipes"; cls.add(ic61); //Classification via Regression, M5P used by default InfoClassifier ic62 = new InfoClassifier(id++); ic62.classifier = new ClassificationViaRegression(); ic62.name = "Classification ViaRegression, M5P"; ic62.properties.requireNumericDataset = true; cls.add(ic62); //RBF Network InfoClassifier ic64 = new InfoClassifier(id++); RBFNetwork rbf = new RBFNetwork(); rbf.setRidge(0.00000001); //10^-8 rbf.setNumClusters(original.trainingSet.numAttributes() / 2); ic64.classifier = rbf; ic64.name = "RBF Network"; ic64.properties.requireNumericDataset = true; if (!original.properties.isStandardized) { ic64.properties.compatibleWithDataset = false; } cls.add(ic64); //RandomTree InfoClassifier ic66 = new InfoClassifier(id++); RandomTree rtr = new RandomTree(); rtr.setMinNum(2); rtr.setAllowUnclassifiedInstances(true); ic66.classifier = rtr; ic66.name = "Random Tree"; ic66.properties.manageMissingValues = true; cls.add(ic66); //RepTree InfoClassifier ic67 = new InfoClassifier(id++); REPTree rept = new REPTree(); ic67.classifier = rept; ic67.name = "Rep Tree"; ic67.properties.manageMissingValues = true; cls.add(ic67); //Decision Stump InfoClassifier ic68 = new InfoClassifier(id++); ic68.classifier = new DecisionStump(); ic68.name = "Decision Stump"; ic68.properties.manageMissingValues = true; cls.add(ic68); //OneR InfoClassifier ic69 = new InfoClassifier(id++); ic69.classifier = new OneR(); ic69.name = "OneR"; ic69.properties.requireNominalDataset = true; ic69.properties.manageMissingValues = true; cls.add(ic69); //LWL InfoClassifier ic71 = new InfoClassifier(id++); ic71.classifier = new LWL(); ic71.name = "LWL"; ic71.properties.manageMissingValues = true; cls.add(ic71); //Bagging LWL InfoClassifier ic72 = new InfoClassifier(id++); Bagging bg72 = new Bagging(); bg72.setClassifier(new LWL()); ic72.classifier = bg72; ic72.name = "Bagging LWL"; ic72.properties.manageMissingValues = true; cls.add(ic72); //Decorate InfoClassifier ic73 = new InfoClassifier(id++); ic73.classifier = new Decorate(); ic73.name = "Decorate"; ic73.properties.manageMissingValues = true; ic73.properties.minNumTrainingInstances = 15; this.indexDecorate = id - 1; cls.add(ic73); //Dagging InfoClassifier ic74 = new InfoClassifier(id++); Dagging dng = new Dagging(); dng.setClassifier(new SMO()); dng.setNumFolds(4); ic74.classifier = dng; ic74.properties.requireNumericDataset = true; ic74.properties.manageMultiClass = false; ic74.name = "Dagging SMO"; cls.add(ic74); //IB1 InfoClassifier ic75 = new InfoClassifier(id++); ic75.classifier = new IB1(); ic75.properties.manageMissingValues = true; ic75.name = "IB1"; cls.add(ic75); //Simple Logistic InfoClassifier ic76 = new InfoClassifier(id++); ic76.classifier = new SimpleLogistic(); ic76.properties.requireNumericDataset = true; ic76.name = "Simple Logistic"; cls.add(ic76); //VFI InfoClassifier ic77 = new InfoClassifier(id++); ic77.classifier = new VFI(); ic77.properties.manageMissingValues = true; ic77.name = "VFI"; cls.add(ic77); //check if classifier satisfies the constraints of min #instances checkMinNumInstanes(cls, original.trainingSet); return cls; }
From source file:gov.va.chir.tagline.TagLineEvaluator.java
License:Open Source License
public void evaluate(final ClassifierType type, final String... options) throws Exception { Classifier model = null;/*w ww.ja va2 s . co m*/ if (type == null) { throw new IllegalArgumentException("Classifier type must be specified"); } if (type.equals(ClassifierType.J48)) { model = new J48(); } else if (type.equals(ClassifierType.LMT)) { model = new LMT(); } else if (type.equals(ClassifierType.RandomForest)) { model = new RandomForest(); } else if (type.equals(ClassifierType.SVM)) { model = new LibSVM(); } else { throw new IllegalArgumentException(String.format("Classifier type not supported (%s)", type)); } if (model != null) { // Set classifier options if (options != null && options.length > 0) { if (model instanceof AbstractClassifier) { ((AbstractClassifier) model).setOptions(options); } } fc.setClassifier(model); final Attribute attrDocId = instances.attribute(DatasetUtil.DOC_ID); if (attrDocId == null) { throw new IllegalStateException(String.format("%s attribute must exist", DatasetUtil.DOC_ID)); } final List<Set<Object>> foldDocIds = getFoldDocIds(attrDocId); final RemoveWithValues rmv = new RemoveWithValues(); // RemoveWithValues filter is not zero-based! rmv.setAttributeIndex(String.valueOf(attrDocId.index() + 1)); rmv.setModifyHeader(false); final Evaluation eval = new Evaluation(instances); // Perform cross-validation for (int i = 0; i < numFolds; i++) { rmv.setNominalIndicesArr(getAttributeIndexValues(attrDocId, foldDocIds.get(i))); rmv.setInvertSelection(false); rmv.setInputFormat(instances); // Must be called AFTER all options final Instances train = Filter.useFilter(instances, rmv); rmv.setInvertSelection(true); rmv.setInputFormat(instances); // Must be called AFTER all options final Instances test = Filter.useFilter(instances, rmv); fc.buildClassifier(train); eval.evaluateModel(fc, test); } evaluationSummary = String.format("%s%s%s%s%s", eval.toSummaryString(), System.getProperty("line.separator"), eval.toMatrixString(), System.getProperty("line.separator"), eval.toClassDetailsString()); } }
From source file:gov.va.chir.tagline.TagLineTrainer.java
License:Open Source License
public TagLineTrainer(final ClassifierType type, final String... options) throws Exception { Classifier model = null;/*from w w w. j av a 2 s . co m*/ if (type == null) { throw new IllegalArgumentException("Classifier type must be specified"); } if (type.equals(ClassifierType.J48)) { model = new J48(); } else if (type.equals(ClassifierType.LMT)) { model = new LMT(); } else if (type.equals(ClassifierType.RandomForest)) { model = new RandomForest(); } else if (type.equals(ClassifierType.SVM)) { model = new LibSVM(); } else { throw new IllegalArgumentException(String.format("Classifier type not supported (%s)", type)); } // Set classifier options if (options != null && options.length > 0) { if (model instanceof AbstractClassifier) { ((AbstractClassifier) model).setOptions(options); } } tagLineModel = new TagLineModel(); tagLineModel.setModel(model); instances = null; extractor = null; }
From source file:org.jaqpot.algorithm.resource.WekaSVM.java
License:Open Source License
@POST @Path("training") public Response training(TrainingRequest request) { try {/*w w w.j a v a 2s . c o m*/ if (request.getDataset().getDataEntry().isEmpty() || request.getDataset().getDataEntry().get(0).getValues().isEmpty()) { return Response.status(Response.Status.BAD_REQUEST).entity( ErrorReportFactory.badRequest("Dataset is empty", "Cannot train model on empty dataset")) .build(); } List<String> features = request.getDataset().getDataEntry().stream().findFirst().get().getValues() .keySet().stream().collect(Collectors.toList()); Instances data = InstanceUtils.createFromDataset(request.getDataset(), request.getPredictionFeature()); Map<String, Object> parameters = request.getParameters() != null ? request.getParameters() : new HashMap<>(); LibSVM regressor = new LibSVM(); Double epsilon = Double.parseDouble(parameters.getOrDefault("epsilon", _epsilon).toString()); Double cacheSize = Double.parseDouble(parameters.getOrDefault("cacheSize", _cacheSize).toString()); Double gamma = Double.parseDouble(parameters.getOrDefault("gamma", _gamma).toString()); Double coeff0 = Double.parseDouble(parameters.getOrDefault("coeff0", _coeff0).toString()); Double cost = Double.parseDouble(parameters.getOrDefault("cost", _cost).toString()); Double nu = Double.parseDouble(parameters.getOrDefault("nu", _nu).toString()); Double loss = Double.parseDouble(parameters.getOrDefault("loss", _loss).toString()); Integer degree = Integer.parseInt(parameters.getOrDefault("degree", _degree).toString()); regressor.setEps(epsilon); regressor.setCacheSize(cacheSize); regressor.setDegree(degree); regressor.setCost(cost); regressor.setGamma(gamma); regressor.setCoef0(coeff0); regressor.setNu(nu); regressor.setLoss(loss); Integer svm_kernel = null; String kernel = parameters.getOrDefault("kernel", _kernel).toString(); if (kernel.equalsIgnoreCase("rbf")) { svm_kernel = LibSVM.KERNELTYPE_RBF; } else if (kernel.equalsIgnoreCase("polynomial")) { svm_kernel = LibSVM.KERNELTYPE_POLYNOMIAL; } else if (kernel.equalsIgnoreCase("linear")) { svm_kernel = LibSVM.KERNELTYPE_LINEAR; } else if (kernel.equalsIgnoreCase("sigmoid")) { svm_kernel = LibSVM.KERNELTYPE_SIGMOID; } regressor.setKernelType(new SelectedTag(svm_kernel, LibSVM.TAGS_KERNELTYPE)); Integer svm_type = null; String type = parameters.getOrDefault("type", _type).toString(); if (type.equalsIgnoreCase("NU_SVR")) { svm_type = LibSVM.SVMTYPE_NU_SVR; } else if (type.equalsIgnoreCase("NU_SVC")) { svm_type = LibSVM.SVMTYPE_NU_SVC; } else if (type.equalsIgnoreCase("C_SVC")) { svm_type = LibSVM.SVMTYPE_C_SVC; } else if (type.equalsIgnoreCase("EPSILON_SVR")) { svm_type = LibSVM.SVMTYPE_EPSILON_SVR; } else if (type.equalsIgnoreCase("ONE_CLASS_SVM")) { svm_type = LibSVM.SVMTYPE_ONE_CLASS_SVM; } regressor.setSVMType(new SelectedTag(svm_type, LibSVM.TAGS_SVMTYPE)); regressor.buildClassifier(data); WekaModel model = new WekaModel(); model.setClassifier(regressor); Map<String, Double> options = new HashMap<>(); options.put("gamma", gamma); options.put("coeff0", coeff0); options.put("degree", new Double(degree.toString())); Field modelField = LibSVM.class.getDeclaredField("m_Model"); modelField.setAccessible(true); svm_model svmModel = (svm_model) modelField.get(regressor); double[][] coefs = svmModel.sv_coef; List<Double> coefsList = IntStream.range(0, coefs[0].length).mapToObj(i -> coefs[0][i]) .collect(Collectors.toList()); svm_node[][] nodes = svmModel.SV; List<Map<Integer, Double>> vectors = IntStream.range(0, nodes.length).mapToObj(i -> { Map<Integer, Double> node = new TreeMap<>(); Arrays.stream(nodes[i]).forEach(n -> node.put(n.index, n.value)); return node; }).collect(Collectors.toList()); String pmml = PmmlUtils.createSVMModel(features, request.getPredictionFeature(), "SVM", kernel, svm_type, options, coefsList, vectors); TrainingResponse response = new TrainingResponse(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(baos); out.writeObject(model); String base64Model = Base64.getEncoder().encodeToString(baos.toByteArray()); response.setRawModel(base64Model); List<String> independentFeatures = features.stream() .filter(feature -> !feature.equals(request.getPredictionFeature())) .collect(Collectors.toList()); response.setIndependentFeatures(independentFeatures); response.setPmmlModel(pmml); response.setAdditionalInfo(request.getPredictionFeature()); response.setPredictedFeatures( Arrays.asList("Weka SVM prediction of " + request.getPredictionFeature())); return Response.ok(response).build(); } catch (Exception ex) { Logger.getLogger(WekaSVM.class.getName()).log(Level.SEVERE, null, ex); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build(); } }