Exemplo n.º 1
0
        public static BayesianNetworkClassifier CreateTANClassifier(Dataset trainingSet)
        {
            TAN tan = new TAN();

            tan.Dataset = trainingSet;
            BayesianNetworkClassifier bnClassifier = tan.CreateClassifier() as BayesianNetworkClassifier;

            return(bnClassifier);
        }
Exemplo n.º 2
0
        public static BayesianNetworkClassifier CreateNaiveBayesianClassifier(Dataset trainingSet)
        {
            NaiveBayesAlgorithm nb = new NaiveBayesAlgorithm();

            nb.Dataset = trainingSet;
            BayesianNetworkClassifier bnClassifier = nb.CreateClassifier() as BayesianNetworkClassifier;

            return(bnClassifier);
        }
Exemplo n.º 3
0
        public static void TestABCMinerPlus()
        {
            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();

            BayesianNetworkClassifier abcBNClassifier = null;

            int seed = (int)DateTime.Now.Ticks;
            BayesianNetworkClassifier abcMinerPlusclassifier = SingleTest.CreateABCMinerPlusClassifier(seed, 100, 10, 10, 3, trainingSet, measure2, false, true, out abcBNClassifier);

            //double quality11 = SingleTest.TestClassifier(abcBNClassifier, testingSet, measure1);
            //double quality21 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure1);

            //double quality12 = SingleTest.TestClassifier(abcBNClassifier, testingSet, measure2);
            //double quality22 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure2);

            //double quality13 = SingleTest.TestClassifier(abcBNClassifier, testingSet, measure3);
            //double quality23 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure3);

            //double quality14 = SingleTest.TestClassifier(abcBNClassifier, testingSet, measure4);
            double quality24 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure4);



            //Console.WriteLine("ABC Quality: " + quality11.ToString());
            //Console.WriteLine("ABCMinerPlus Quality: " + quality21.ToString());

            //Console.WriteLine("ABC Quality: " + quality12.ToString());
            //Console.WriteLine("ABCMinerPlus Quality: " + quality22.ToString());

            //Console.WriteLine("ABC Quality: " + quality13.ToString());
            //Console.WriteLine("ABCMinerPlus Quality: " + quality23.ToString());

            //Console.WriteLine("ABC Quality: " + quality14.ToString());
            Console.WriteLine("ABCMinerPlus Quality: " + quality24.ToString());

            string xml = BayesianNetworks.Utilities.GraphExporter.ExportToGaphSharpXml(abcMinerPlusclassifier);

            System.IO.File.WriteAllText(@"C:\0 - Khalid\Academics\" + datasetName + "2.xml", xml);

            //Console.WriteLine("ABC Size: " + abcBNClassifier.Edges.Length);
            //Console.WriteLine("ABCMinerPlus Size: " + abcMinerPlusclassifier.Edges.Length);



            Console.WriteLine("End");

            Console.ReadLine();
        }
Exemplo n.º 4
0
        public static void TestNaive()
        {
            Console.WriteLine("Start");

            Dataset trainingSet = ArffHelper.LoadDatasetFromArff(datasetFilePath);
            Dataset testingSet  = ArffHelper.LoadDatasetFromArff(datasetFilePath);

            DataMining.ClassificationMeasures.IClassificationQualityMeasure qualityEvaluator = new DataMining.ClassificationMeasures.AccuracyMeasure();

            BayesianNetworkClassifier naive = SingleTest.CreateNaiveBayesianClassifier(trainingSet);
            double quality = SingleTest.TestClassifier(naive, testingSet, qualityEvaluator);

            quality = Math.Round(quality * 100, 2);
            Console.WriteLine("Naive Quality: " + quality.ToString());
            Console.WriteLine("End");
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        public static void TestABCMinerPlusI()
        {
            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();


            int seed = (int)DateTime.Now.Ticks;
            BayesianNetworkClassifier abcMinerPlusclassifier = SingleTest.CreateABCMinerPlusIClassifier(seed, 10, 1, 5, 10, 2, trainingSet, measure1, false, true);

            double quality1 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure1);

            quality1 = Math.Round(quality1 * 100, 2);

            double quality2 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure2);

            quality2 = Math.Round(quality2 * 100, 2);

            double quality3 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure3);

            quality3 = Math.Round(quality3 * 100, 2);

            double quality4 = SingleTest.TestClassifier(abcMinerPlusclassifier, testingSet, measure4);

            quality4 = Math.Round(quality4 * 100, 2);

            Console.WriteLine("ABCMinerPlusI Quality1: " + quality1.ToString());
            Console.WriteLine("ABCMinerPlusI Quality2: " + quality2.ToString());
            Console.WriteLine("ABCMinerPlusI Quality3: " + quality3.ToString());
            Console.WriteLine("ABCMinerPlusI Quality4: " + quality4.ToString());
            Console.WriteLine("End");


            Console.WriteLine("End");

            Console.ReadLine();
        }
Exemplo n.º 7
0
        static void abcMinerPlus_OnVariableTypeAssignmentCompleted(object sender, EventArgs e)
        {
            BayesianNetworkClassifier abcBNC = sender as BayesianNetworkClassifier;

            abcBNClassfier = abcBNC;
        }
Exemplo n.º 8
0
        public static BayesianNetworkClassifier CreateABCMinerPlusClassifier(int seed, int iterations, int colonySize, int convergence, int maxParents, Dataset trainingSet, DataMining.ClassificationMeasures.IClassificationQualityMeasure measure, bool performLocalSearch, bool fireEvents, out BayesianNetworkClassifier abcBNClassifier)
        {
            DataMining.Utilities.RandomUtility.Initialize(seed);

            VariableTypeAssigmentInvalidator       invalidator1             = new VariableTypeAssigmentInvalidator();
            BayesianClassificationQualityEvaluator evaluator                = new BayesianClassificationQualityEvaluator(measure);
            VariableTypeAssignmentLocalSearch      localSearch1             = new VariableTypeAssignmentLocalSearch(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);

            ABCMinerPlus abcMinerPlus = new ABCMinerPlus(iterations, colonySize, convergence, problem2, problem1, maxParents, trainingSet, performLocalSearch);

            if (fireEvents)
            {
                abcMinerPlus.ABCAlgorithm.OnPostAntSolutionContruction += new EventHandler(abclassifier_OnPostAntSolutionContruction);
                abcMinerPlus.ABCAlgorithm.OnPostColonyIteration        += new EventHandler(abclassifier_OnPostColonyIteration);

                abcMinerPlus.ABCMinerAlgorithm.OnPostAntSolutionContruction += new EventHandler(abclassifier_OnPostAntSolutionContruction);
                abcMinerPlus.ABCMinerAlgorithm.OnPostColonyIteration        += new EventHandler(abclassifier_OnPostColonyIteration);

                abcMinerPlus.OnVariableTypeAssignmentCompleted += new EventHandler(abcMinerPlus_OnVariableTypeAssignmentCompleted);
            }


            BayesianNetworks.Model.BayesianNetworkClassifier bnclassifier = abcMinerPlus.CreateClassifier() as BayesianNetworkClassifier;
            abcBNClassifier = abcBNClassfier;
            return(bnclassifier);
        }