public static BayesianNetworkClassifier CreateGreedyBayesianClassifier(int maxDependencies, int maxEvaluations, Dataset trainingSet, DataMining.ClassificationMeasures.IClassificationQualityMeasure qualityEvaluator, bool fireEvents) { CyclicRelationInvalidator invalidator = new CyclicRelationInvalidator(); invalidator.MaxDependencies = maxDependencies; BayesianClassificationQualityEvaluator evaluator = new BayesianClassificationQualityEvaluator(qualityEvaluator); evaluator.ValidationSet = trainingSet; BackwardRemovalLocalSearch localSearch = new BackwardRemovalLocalSearch(evaluator); Problem <Edge> problem = new Problem <Edge>(invalidator, null, evaluator, localSearch); GHC hcblassifier = new GHC(0, 0, 0, problem, maxEvaluations, trainingSet, trainingSet); if (fireEvents) { hcblassifier.OnPostEvaluation += new EventHandler(hcblassifier_OnPostEvaluation); hcblassifier.OnProgress += new EventHandler(hcblassifier_OnProgress); } hcblassifier.Work(); BayesianNetworks.Model.BayesianNetworkClassifier bnclassifier = hcblassifier.BayesianNetworkClassifier; return(bnclassifier); }
private static void hcblassifier_OnPostEvaluation(object sender, EventArgs e) { if (sender is GHC) { GHC classifier = sender as GHC; Console.WriteLine("Counter: " + classifier.EvaluationsCounter.ToString()); } else { K2Algorithm classifier = sender as K2Algorithm; Console.WriteLine("Counter: " + classifier.EvaluationsCounter.ToString()); } }
static void hcblassifier_OnProgress(object sender, EventArgs e) { if (sender is GHC) { GHC classifier = sender as GHC; Console.WriteLine("-----------------------------------"); Console.WriteLine("Quality: " + classifier.BestSolution.Quality); Console.WriteLine("-----------------------------------"); } else { K2Algorithm classifier = sender as K2Algorithm; Console.WriteLine("-----------------------------------"); Console.WriteLine("Quality: " + classifier.BestSolution.Quality); Console.WriteLine("-----------------------------------"); } }