예제 #1
0
파일: Program.cs 프로젝트: skn123/iFourmi
        public static void TestKmeanClusteringBMN()
        {
            int seed = (int)DateTime.Now.Ticks;

            Console.WriteLine("Start");

            string  datasetFile = folderPath + "\\" + datasetName + ".arff";
            Dataset trainingSet = ArffHelper.LoadDatasetFromArff(datasetFile);
            Dataset testingSet  = ArffHelper.LoadDatasetFromArff(datasetFile);

            double avgQualiy = 0;

            int k = 8;

            for (int i = 0; i < 10; i++)
            {
                DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.ClassBasedSimilarityMeasure(trainingSet);
                //DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.BinaryMatchingSimilarityMeasure();
                DataMining.ClassificationMeasures.IClassificationQualityMeasure accuracy = new DataMining.ClassificationMeasures.AccuracyMeasure();
                DataMining.Algorithms.IClassificationAlgorithm naive  = new NaiveBayesAlgorithm();
                DataMining.Algorithms.IClusteringAlgorithm     kmeans = new DataMining.Algorithms.KMeans(trainingSet, k, similarityMeasure, 100, true);
                DataMining.Model.IClassifier cBMNClassifier           = SingleTest.CreateClusteringBMNClassifier(seed, k, trainingSet, similarityMeasure, accuracy, kmeans, naive, false);
                double quality = SingleTest.TestClassifier(cBMNClassifier, testingSet, accuracy);
                Console.WriteLine("Quality: " + quality.ToString());
                avgQualiy += quality;
            }

            Console.WriteLine(avgQualiy / 10);
            Console.WriteLine("End");
        }
예제 #2
0
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            Example example = null;

            double[] errors = new double[dataset.Size];

            for (int i = 0; i < dataset.Size; i++)
            {
                example = dataset[i];

                int actual = example.Label;

                Prediction prediction  = classifier.Classify(example);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                errors[i] = Math.Abs(1 - prediction.Probabilities[actual]);
            }

            Array.Sort(errors);

            double MedAE = errors[errors.Length / 2];

            return(MedAE);
        }
예제 #3
0
파일: Program.cs 프로젝트: skn123/iFourmi
        public static void TestANTClustBMN_IB()
        {
            int seed = (int)DateTime.Now.Ticks;

            Console.WriteLine("Start");

            string  datasetFile = folderPath + "\\" + datasetName + ".arff";
            Dataset trainingSet = ArffHelper.LoadDatasetFromArff(datasetFile);
            Dataset testingSet  = ArffHelper.LoadDatasetFromArff(datasetFile);

            DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.ClassBasedSimilarityMeasure(trainingSet);
            //DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.BinaryMatchingSimilarityMeasure();

            DataMining.ClassificationMeasures.IClassificationQualityMeasure accuracy = new DataMining.ClassificationMeasures.AccuracyMeasure();
            DataMining.Algorithms.IClassificationAlgorithm naive = new NaiveBayesAlgorithm();
            DataMining.Model.IClassifier cBMNClassifier          = SingleTest.CreateAntClustBMNClassifier_IB(seed, trainingSet, 1, 1, 10, 3, similarityMeasure, accuracy, naive, true);
            double quality = SingleTest.TestClassifier(cBMNClassifier, testingSet, accuracy);

            Console.WriteLine("Quality: " + quality.ToString());
        }
예제 #4
0
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            double MAE = 0;

            Example example = null;

            for (int i = 0; i < dataset.Size; i++)
            {
                example = dataset[i];

                int actual = example.Label;

                Prediction prediction  = classifier.Classify(example);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                MAE += Math.Abs(1 - prediction.Probabilities[actual]);
            }

            MAE = MAE / dataset.Size;

            return(MAE);
        }
예제 #5
0
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            double QLE = 0;

            Example example = null;

            for (int i = 0; i < dataset.Size; i++)
            {
                example = dataset[i];

                int actual = example.Label;

                Prediction prediction  = classifier.Classify(example);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                QLE += Math.Log(1 + Math.Exp(-probability));
            }

            QLE = QLE / dataset.Size;

            return(QLE);
        }
예제 #6
0
파일: MSError.cs 프로젝트: skn123/iFourmi
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            double MSE = 0;

            Instance instance = null;

            for (int i = 0; i < dataset.Size; i++)
            {
                instance = dataset[i];

                int actual = instance.Label;

                Prediction prediction  = classifier.Classify(instance);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                MSE += Math.Pow(1 - prediction.Probabilities[actual], 2);
            }

            MSE = Math.Sqrt(MSE) / dataset.Size;

            return(MSE);
        }
예제 #7
0
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            double QLF = 0;

            Example example = null;

            for (int i = 0; i < dataset.Size; i++)
            {
                example = dataset[i];

                int actual = example.Label;

                Prediction prediction  = classifier.Classify(example);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                double value = 0;

                for (int index = 0; index < dataset.Metadata.Target.Length; index++)
                {
                    if (index == actual)
                    {
                        value -= 2 * probability;
                    }
                    else
                    {
                        value += Math.Pow(prediction.Probabilities[index], 2);
                    }
                }

                QLF += (2 + value) / 3;
            }

            QLF = QLF / dataset.Size;

            return(QLF);
        }
예제 #8
0
파일: Program.cs 프로젝트: skn123/iFourmi
        public static void TestACOCluster_IBThenBMN()
        {
            int seed = (int)DateTime.Now.Ticks;

            Console.WriteLine("Start");

            string  datasetFile = folderPath + "\\" + datasetName + ".arff";
            Dataset trainingSet = ArffHelper.LoadDatasetFromArff(datasetFile);
            Dataset testingSet  = ArffHelper.LoadDatasetFromArff(datasetFile);

            double avgQualiy = 0;

            for (int i = 0; i < 1; i++)
            {
                DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.ClassBasedSimilarityMeasure(trainingSet);
                //DataMining.ProximityMeasures.ISimilarityMeasure similarityMeasure = new DataMining.ProximityMeasures.BinaryMatchingSimilarityMeasure();
                DataMining.ClassificationMeasures.IClassificationQualityMeasure accuracy = new DataMining.ClassificationMeasures.AccuracyMeasure();
                DataMining.Algorithms.IClassificationAlgorithm naive = new NaiveBayesAlgorithm();

                DefaultHeuristicCalculator <ClusterExampleAssignment> calculator = new DefaultHeuristicCalculator <ClusterExampleAssignment>();
                ClusteringIBInvalidator invalidator = new ClusteringIBInvalidator();
                DataMining.ProximityMeasures.IClusteringQualityMeasure measure = new CohesionClusteringMeasure();
                ClusteringQualityEvaluator cohesionEvaluator = new ClusteringQualityEvaluator(measure);
                KMeansLocalSearch          localSearch       = new KMeansLocalSearch(trainingSet, 1, similarityMeasure, cohesionEvaluator);
                ACO.ProblemSpecifics.ISolutionQualityEvaluator <DataMining.Model.ClusterExampleAssignment> evaluator = new ClusteringQualityEvaluator(measure);
                Problem <DataMining.Model.ClusterExampleAssignment> problem = new Problem <DataMining.Model.ClusterExampleAssignment>(invalidator, calculator, evaluator, localSearch);

                DataMining.Algorithms.IClusteringAlgorithm AntClustering = new ACOClustering_IB(1000, 10, 10, problem, 10, similarityMeasure, true);
                DataMining.Model.IClassifier cBMNClassifier = SingleTest.CreateClusteringBMNClassifier(seed, 10, trainingSet, similarityMeasure, accuracy, AntClustering, naive, true);
                double quality = SingleTest.TestClassifier(cBMNClassifier, testingSet, accuracy);
                Console.WriteLine("Quality: " + quality.ToString());
                avgQualiy += quality;
            }

            Console.WriteLine(avgQualiy / 10);
            Console.WriteLine("End");
        }
예제 #9
0
        public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
        {
            double BIReward = 0;

            double[] classProbabilities = new double[dataset.Metadata.Target.Length];

            for (int i = 0; i < classProbabilities.Length; i++)
            {
                classProbabilities[i] = (double)dataset.Filter(i).Count / (double)dataset.Size;
            }

            Example example = null;

            for (int i = 0; i < dataset.Size; i++)
            {
                example = dataset[i];

                int actual = example.Label;

                Prediction prediction  = classifier.Classify(example);
                int        predicted   = prediction.Label;
                double     probability = prediction.Probabilities[prediction.Label];

                if (predicted == actual)
                {
                    BIReward += Math.Log(probability / classProbabilities[actual]);
                }
                else
                {
                    BIReward += Math.Log((1 - probability) / (1 - classProbabilities[actual]));
                }
            }

            BIReward = (BIReward / dataset.Size) + 0.5;

            return(BIReward);
        }
예제 #10
0
 public static double TestClassifier(DataMining.Model.IClassifier classifier, Dataset testingSet, DataMining.ClassificationMeasures.IClassificationQualityMeasure qualityTester)
 {
     return(qualityTester.CalculateMeasure(DataMining.ClassificationMeasures.ConfusionMatrix.GetConfusionMatrixes(classifier, testingSet)));
 }
예제 #11
0
 public double CalculateMeasure(DataMining.Model.IClassifier classifier, Data.Dataset dataset)
 {
     return(this.CalculateMeasure(ConfusionMatrix.ComputeConfusionMatrixes(classifier, dataset)));
 }