public static BayesianNetworkClassifier CreateABCMinerPlusIClassifier(int seed, int iterations, int colonySize, int localColonySize, int convergence, int maxParents, Dataset trainingSet, DataMining.ClassificationMeasures.IClassificationQualityMeasure measure, bool performLocalSearch, bool fireEvents) { DataMining.Utilities.RandomUtility.Initialize(seed); VariableTypeAssigmentInvalidator invalidator1 = new VariableTypeAssigmentInvalidator(); BayesianClassificationQualityEvaluator evaluator = new BayesianClassificationQualityEvaluator(measure); SimpleVariableTypeAssignmentLocalSearch localSearch1 = new SimpleVariableTypeAssignmentLocalSearch(evaluator); DefaultHeuristicCalculator <VariableTypeAssignment> calculator1 = new DefaultHeuristicCalculator <VariableTypeAssignment>(); Problem <VariableTypeAssignment> problem1 = new Problem <VariableTypeAssignment>(invalidator1, calculator1, evaluator, localSearch1); CyclicRelationInvalidator invalidator2 = new CyclicRelationInvalidator(); BackwardRemovalLocalSearch localSearch2 = new BackwardRemovalLocalSearch(evaluator); CMICalculator calculator = new CMICalculator(); Problem <Edge> problem2 = new Problem <Edge>(invalidator2, calculator, evaluator, localSearch2); ABCMinerPlusI abcMinerPlusI = new ABCMinerPlusI(iterations, colonySize, localColonySize, convergence, problem2, problem1, maxParents, trainingSet, performLocalSearch); if (fireEvents) { abcMinerPlusI.ABCAlgorithm.OnPostAntSolutionContruction += new EventHandler(abclassifier_OnPostAntSolutionContruction); abcMinerPlusI.ABCAlgorithm.OnPostColonyIteration += new EventHandler(abclassifier_OnPostColonyIteration); abcMinerPlusI.ABCMinerAlgorithm.OnPostAntSolutionContruction += new EventHandler(abclassifier_OnPostAntSolutionContruction); abcMinerPlusI.ABCMinerAlgorithm.OnPostColonyIteration += new EventHandler(abclassifier_OnPostColonyIteration); } BayesianNetworks.Model.BayesianNetworkClassifier bnclassifier = abcMinerPlusI.CreateClassifier() as BayesianNetworkClassifier; return(bnclassifier); }
public iFourmi.DataMining.Model.IClassifier CreateClassifier() { Solution <Edge> solution = new Solution <Edge>(); CyclicRelationInvalidator invalidator = new CyclicRelationInvalidator(); invalidator.MaxDependencies = 1; ConstructionGraph <Edge> constructionGraph = ConstructionGraphBuilder.BuildBNConstructionGraph(this._trainingset.Metadata); CMICalculator cmiCalculator = new CMICalculator(); cmiCalculator.Dataset = this._trainingset; constructionGraph.SetHeuristicValues(cmiCalculator, false); List <DecisionComponent <Edge> > components = constructionGraph.Components.OrderByDescending(e => e.Heuristic).ToList(); while (components.Count != 0) { DecisionComponent <Edge> component = components[0]; solution.Components.Add(component); invalidator.Invalidate(component, solution, constructionGraph); components = constructionGraph.Components.Where(e => e.IsValid).OrderByDescending(e => e.Heuristic).ToList(); } BayesianNetworkClassifier BNClassifier = new BayesianNetworks.Model.BayesianNetworkClassifier(this._trainingset.Metadata, solution.ToList()); BNClassifier.LearnParameters(this._trainingset); return(BNClassifier); }
public static void TestABCMiner() { Console.WriteLine("Start"); Dataset trainingSet = ArffHelper.LoadDatasetFromArff(datasetFilePath); Dataset testingSet = ArffHelper.LoadDatasetFromArff(datasetFilePath); DataMining.ClassificationMeasures.IClassificationQualityMeasure measure1 = new DataMining.ClassificationMeasures.MicroAccuracyMeasure(); DataMining.ClassificationMeasures.IClassificationQualityMeasure measure2 = new DataMining.ClassificationMeasures.ProbabilityAccuracyMeasure(); DataMining.ClassificationMeasures.IClassificationQualityMeasure measure3 = new DataMining.ClassificationMeasures.ReducedErrorMeasure(); DataMining.ClassificationMeasures.IClassificationQualityMeasure measure4 = new DataMining.ClassificationMeasures.ProbabilityReducedErrorMeasure(); IHeuristicValueCalculator <Edge> calculator = new CMICalculator(); int seed = (int)DateTime.Now.Ticks; BayesianNetworkClassifier abclassifier = SingleTest.CreateABCMinerClassifier(seed, 100, 10, 10, 3, trainingSet, measure1, calculator, false, true); //double quality1 = SingleTest.TestClassifier(abclassifier, testingSet, measure1); //quality1 = Math.Round(quality1 * 100, 2); //double quality2 = SingleTest.TestClassifier(abclassifier, testingSet, measure2); //quality2 = Math.Round(quality2 * 100, 2); //double quality3 = SingleTest.TestClassifier(abclassifier, testingSet, measure3); //quality3 = Math.Round(quality3 * 100, 2); double quality4 = SingleTest.TestClassifier(abclassifier, testingSet, measure4); quality4 = Math.Round(quality4 * 100, 2); //Console.WriteLine("ABC Quality1: " + quality1.ToString()); //Console.WriteLine("ABC Quality2: " + quality2.ToString()); //Console.WriteLine("ABC Quality3: " + quality3.ToString()); Console.WriteLine("ABC Quality4: " + quality4.ToString()); Console.WriteLine("End"); string xml = BayesianNetworks.Utilities.GraphExporter.ExportToGaphSharpXml(abclassifier); System.IO.File.WriteAllText(@"C:\0 - Khalid\Academics\" + datasetName + "1.xml", xml); Console.ReadLine(); }