コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: TAN.cs プロジェクト: skn123/iFourmi
        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);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: skn123/iFourmi
        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();
        }