/// <summary> /// Classify our data using support vector machine classifer and save the model. /// </summary> /// <param name="train_data">Frame objects that we will use to train classifers.</param> /// <param name="test_data">Frame objects that we will use to test classifers.</param> /// <param name="train_label">Labels of the train data.</param> /// <param name="test_label">Labels of the test data.</param> /// <param name="Classifier_Path">Path where we want to save the classifer on the disk.</param> /// <param name="Classifier_Name">Name of the classifer we wnat to save.</param> /// <returns></returns> public void SVM(double[][] train_data, double[][] test_data, int[] train_label, int[] test_label, String Classifier_Path, String Classifier_Name) { var learn = new SequentialMinimalOptimization <Gaussian>() { UseComplexityHeuristic = true, UseKernelEstimation = true }; try { SupportVectorMachine <Gaussian> svm = learn.Learn(train_data, train_label); bool[] prediction = svm.Decide(test_data); var cm = GeneralConfusionMatrix.Estimate(svm, test_data, test_label); double error = cm.Error; Console.WriteLine(error); svm.Save(Path.Combine(Classifier_Path, Classifier_Name)); } catch (Exception e) { Console.WriteLine(e.StackTrace); } }
public void Classification_Train(double[,] train_docrule, int[] label, string algorithm) { string classmodelpath; int attrSize = eclatlitems.Count; int attrSizeTest = eclatlitems.Count; // Specify the input variables DecisionVariable[] variables = new DecisionVariable[attrSize]; for (int i = 0; i < attrSize; i++) { variables[i] = new DecisionVariable((i + 1).ToString(), DecisionVariableKind.Discrete); } if (algorithm == "Tree") { classmodelpath = algorithm + ".model"; //RandomForest tree2 = new RandomForest(2, variables); DecisionTree tree = new DecisionTree(variables, 2); C45Learning teacher = new C45Learning(tree); var model = teacher.Learn(train_docrule.ToJagged(), label); //save model teacher.Save(Path.Combine("", classmodelpath)); } if (algorithm == "SVM") { classmodelpath = algorithm + ".model"; var learn = new SequentialMinimalOptimization() { UseComplexityHeuristic = true, UseKernelEstimation = false }; SupportVectorMachine teacher = learn.Learn(train_docrule.ToJagged(), label); //save model teacher.Save(Path.Combine("", classmodelpath)); } if (algorithm == "Logistic") { classmodelpath = algorithm + ".model"; var learner = new IterativeReweightedLeastSquares <LogisticRegression>() { Tolerance = 1e-4, // Let's set some convergence parameters Iterations = 1, // maximum number of iterations to perform Regularization = 0 }; LogisticRegression teacher = learner.Learn(train_docrule.ToJagged(), label); teacher.Save(Path.Combine("", classmodelpath)); } if (algorithm == "GA") { weights_ga_matlab(); } }