public static ResultObject EvaluateACOMinerDR_WekaClassifier(string algorithm, string trainingSetPath, string testSetPath, Dataset trainingSet, bool useAttributes, bool useInstances) { Classifier classifier = WekaNETBridge.WekaClassification.GetWekaClassifier(algorithm, trainingSetPath); //DefaultDRHeuristicCalculator calculator = new DefaultDRHeuristicCalculator(); ADRHeuristicCalculator calculator = new ADRHeuristicCalculator(); DRComponentInvalidator invalidator = new DRComponentInvalidator(); WekaNETBridge.WekaClassification wekaClassification = new WekaNETBridge.WekaClassification(trainingSetPath, classifier); WekaClassificationQualityEvaluator evaluator = new WekaClassificationQualityEvaluator(wekaClassification, !useAttributes); DRLocalSearch localSearch = new DRLocalSearch(evaluator); Problem <DRComponent> problem = new Problem <DRComponent>(invalidator, calculator, evaluator, localSearch); ADRMiner acominer = new ADRMiner(maxIterations, colonySize, convergenceIterations, problem, useAttributes, useInstances, false, trainingSet); acominer.OnPostAntSolutionContruction += OnPostAntSolutionContruction; acominer.OnPostColonyIteration += OnPostColonyIteration; //acominer.Initialize(); //acominer.Work(); //weka.classifiers.Classifier final = evaluator.CreateClassifier(acominer.BestAnt.Solution); WekaNETBridge.WekaClassifier wekcaClassifier = acominer.CreateWekaClassifier(); double quality = WekaNETBridge.WekaClassification.EvaluateClassifier(wekcaClassifier, testSetPath); double attribueReduction = acominer.BestAnt.Solution.FeatureCount() / (double)trainingSet.Metadata.Attributes.Length; double instanceReduction = acominer.BestAnt.Solution.InstanceCount() / (double)trainingSet.Size; ResultObject result = new ResultObject() { Quality = quality, AttributeReduction = attribueReduction, InstanceReduciton = instanceReduction }; return(result); }
public static ResultObject EvaluateACOMinerDR2_WekaClassifier(string algorithm, string trainingSetPath, string testSetPath, Dataset trainingSet, bool attributeFirst) { Classifier classifier = WekaNETBridge.WekaClassification.GetWekaClassifier(algorithm, trainingSetPath); ADRHeuristicCalculator calculator = new ADRHeuristicCalculator(); DRComponentInvalidator invalidator = new DRComponentInvalidator(); WekaNETBridge.WekaClassification wekaClassification = new WekaNETBridge.WekaClassification(trainingSetPath, classifier); WekaClassificationQualityEvaluator evaluator = new WekaClassificationQualityEvaluator(wekaClassification, false); DRLocalSearch localSearch = new DRLocalSearch(evaluator); Problem <DRComponent> problem = new Problem <DRComponent>(invalidator, calculator, evaluator, localSearch); ADRMiner2 acominer = new ADRMiner2(maxIterations, colonySize, convergenceIterations, problem, attributeFirst, false, trainingSet); acominer.ACO1.OnPostAntSolutionContruction += OnPostAntSolutionContruction; acominer.ACO1.OnPostColonyIteration += OnPostColonyIteration; acominer.ACO2.OnPostAntSolutionContruction += OnPostAntSolutionContruction; acominer.ACO2.OnPostColonyIteration += OnPostColonyIteration; WekaNETBridge.WekaClassifier wekcaClassifier = acominer.CreateWekaClassifier(); double quality = WekaNETBridge.WekaClassification.EvaluateClassifier(wekcaClassifier, testSetPath); double attribueReduction = acominer.BestSolution.AttributesToRemove().Length; double instanceReduction = acominer.BestSolution.InstanceCount() / (double)trainingSet.Size; ResultObject result = new ResultObject() { Quality = quality, AttributeReduction = attribueReduction, InstanceReduciton = instanceReduction }; return(result); }